当前位置: 首页 > news >正文

做个支付网站多少钱班级优化大师使用心得

做个支付网站多少钱,班级优化大师使用心得,做网站的公司都有哪些,厦门百度seo排名主备切换 主从复制指的是把一台Redis服务器的数据复制到其他Redis服务器上,前者称为主节点Master,后者称为从节点Slave,只能从Master单向复制到Slave,一般Master以写操作为主,Slave以读操作为主,实现读写分…

主备切换
主从复制指的是把一台Redis服务器的数据复制到其他Redis服务器上,前者称为主节点Master,后者称为从节点Slave,只能从Master单向复制到Slave,一般Master以写操作为主,Slave以读操作为主,实现读写分离。

作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
命令
slaveof host port    将当前服务器转变为指定服务器的从属服务器。如果已是slave则停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。SLAVEOF NO ONE将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
info [section]    INFO命令以一种易于理解和阅读的格式,返回关于Redis服务器的各种信息和统计数值。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:
配置
以单机多服务为例(正常是多机多服务,然我只有一台服务器)

首先每个redis客户端都默认是主机,可以通过info replication命令查看
那么我们现在要同时开三个客户端,模拟一主两从,所以要修改配置:

修改端口号
修改pid名字
修改log名字
修改rdb名字
设置主机连接(可不选,用命令行)
先拷贝两份配置文件作为从机配置,主机可使用默认。

哨兵模式
上面的80上位和嵌套主从都是我们手动命令行输入的,其目的就是避免主机宕机后写操作的空窗期,这些都是需要人工干预。
哨兵Sentinel会作为一个独立的进程独立运行,其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis服务器。
如果哨兵检测到主机下线,则会选一个从机「上位」(自动故障迁移)成为新的主机。如果原主机上线,原主机将变成新主机的从机。其原理是通过发布订阅模式通知其他服务器,修改配置文件,从而切换主机。

如果哨兵宕机怎么办?可以使用多哨兵模式

主观下线(Subjectively Down, 简称 SDOWN)指的是单个哨兵实例对服务器做出的下线判断。
客观下线(Objectively Down, 简称 ODOWN)指的是多个哨兵实例在对同一个服务器做出主观下线判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。
当主机客观下线后,哨兵会投票出新的主机(具体算法略 ),进行自动故障迁移(failover),通过发布订阅通知其他服务器切换主机。
多哨兵模式,配置不同端口的配置文件来开启多个哨兵客户端,然后照葫芦画瓢即可

如何应对缓存穿透、缓存击穿、缓存雪崩问题
8.1. Key 的过期淘汰机制
Redis 可以对存储在 Redis 中的缓存数据设置过期时间,比如我们获取的短信验证码一般十分钟
过期,我们这时候就需要在验证码存进 Redis 时添加一个 key 的过期时间,但是这里有一个需要格
外注意的问题就是:并非 key 过期时间到了就一定会被 Redis 给删除。
8.1.1. 定期删除
Redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 Key ,检查其是否过期,如果过
期就删除。为什么是随机抽取而不是检查所有 key ?因为你如果设置的 key 成千上万,每 100 毫秒
都将所有存在的 key 检查一遍,会给 CPU 带来比较大的压力。
8.1.2. 惰性删除
定期删除由于是随机抽取可能会导致很多过期 Key 到了过期时间并没有被删除。所以用户在
从缓存获取数据的时候, redis 会检查这个 key 是否过期了,如果过期就删除这个 key 。这时候就
会在查询的时候将过期 key 从缓存中清除。
8.1.3. 内存淘汰机制
# 最大空闲连接,默认 8
max-idle : 200
# 最小空闲连接,默认 0
min-idle : 5
# 哨兵模式
sentinel :
# 主节点名称
master : mymaster
# 节点
nodes :
192.168.10.100 : 26379,192.168.10.100 : 26380,192.168.10.100 : 26381
@Bean
public RedisSentinelConfiguration redisSentinelConfiguration (){
RedisSentinelConfiguration sentinelConfig = new
RedisSentinelConfiguration ()
// 主节点名称
. master ( "mymaster" )
// 主从服务器地址
. sentinel ( "192.168.10.100" , 26379 )
. sentinel ( "192.168.10.100" , 26380 )
. sentinel ( "192.168.10.100" , 26381 );
// 设置密码
sentinelConfig . setPassword ( "root" );
return sentinelConfig ;
} 仅仅使用定期删除 + 惰性删除机制还是会留下一个严重的隐患:如果定期删除留下了很多已
经过期的 key ,而且用户长时间都没有使用过这些过期 key ,导致过期 key 无法被惰性删除,从而
导致过期 key 一直堆积在内存里,最终造成 Redis 内存块被消耗殆尽。那这个问题如何解决呢?这
个时候 Redis 内存淘汰机制应运而生了。 Redis 内存淘汰机制提供了 6 种数据淘汰策略:
volatile-lru :从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile - ttl :从已设置过期时间的数据集中挑选将要过期的数据淘汰。
volatile - random :从已设置过期时间的数据集中任意选择数据淘汰。
allkeys - lru :当内存不足以容纳新写入数据时移除最近最少使用的 key
allkeys - random :从数据集中任意选择数据淘汰。
no - enviction (默认) :当内存不足以容纳新写入数据时,新写入操作会报错。
一般情况下,推荐使用 volatile - lru 策略,对于配置信息等重要数据,不应该设置过期时
间,这样 Redis 就永远不会淘汰这些重要数据。对于一般数据可以添加一个缓存时间,当数据失
效则请求会从 DB 中获取并重新存入 Redis 中。
8.2. 缓存击穿
首先我们来看下请求是如何取到数据的:当接收到用户请求,首先先尝试从 Redis 缓存中获取
到数据,如果缓存中能取到数据则直接返回结果,当缓存中不存在数据时从 DB 获取数据,如果
数据库成功取到数据,则更新 Redis ,然后返回数据
定义 :高并发的情况下,某个热门 key 突然过期,导致大量请求在 Redis 未找到缓存数据,进而
全部去访问 DB 请求数据,引起 DB 压力瞬间增大。
解决方案 :缓存击穿的情况下一般不容易造成 DB 的宕机,只是会造成对 DB 的周期性压力。对
缓存击穿的解决方案一般可以这样:
Redis 中的数据不设置过期时间,然后在缓存的对象上添加一个属性标识过期时间,每次获
取到数据时,校验对象中的过期时间属性,如果数据即将过期,则异步发起一个线程主动
更新缓存中的数据。但是这种方案可能会导致有些请求会拿到过期的值,就得看业务能否
可以接受,
如果要求数据必须是新数据,则最好的方案则为热点数据设置为永不过期,然后加一个互
斥锁保证缓存的单线程写。
8.3. 缓存穿透
定义 :缓存穿透是指查询缓存和 DB 中都不存在的数据。比如通过 id 查询商品信息, id 一般大
0 ,攻击者会故意传 id -1 去查询,由于缓存是不命中则从 DB 中获取数据,这将会导致每次缓
存都不命中数据导致每个请求都访问 DB ,造成缓存穿透。
解决方案
利用互斥锁,缓存失效的时候,先去获得锁,得到锁了,再去请求数据库。没得到锁,则
休眠一段时间重试
采用异步更新策略,无论 key 是否取到值,都直接返回。 value 值中维护一个缓存失效时
间,缓存如果过期,异步起一个线程去读数据库,更新缓存。需要做缓存预热 ( 项目启动
前,先加载缓存 ) 操作。
提供一个能迅速判断请求是否有效的拦截机制,比如,利用布隆过滤器,内部维护一系列
合法有效的 key 。迅速判断出,请求所携带的 Key 是否合法有效。如果不合法,则直接返
回。 如果从数据库查询的对象为空,也放入缓存,只是设定的缓存过期时间较短,比如设置为
60 秒。
8.4. 缓存雪崩
定义 :缓存中如果大量缓存在一段时间内集中过期了,这时候会发生大量的缓存击穿现象,所
有的请求都落在了 DB 上,由于查询数据量巨大,引起 DB 压力过大甚至导致 DB 宕机。
解决方案
给缓存的失效时间,加上一个随机值,避免集体失效。如果 Redis 是集群部署,将热点数据
均匀分布在不同的 Redis 库中也能避免全部失效的问题
使用互斥锁,但是该方案吞吐量明显下降了。
设置热点数据永远不过期。
双缓存。我们有两个缓存,缓存 A 和缓存 B 。缓存 A 的失效时间为 20 分钟,缓存 B 不设失效时
间。自己做缓存预热操作。然后细分以下几个小点
1. 从缓存 A 读数据库,有则直接返回
2. A 没有数据,直接从 B 读数据,直接返回,并且异步启动一个更新线程。
3. 更新线程同时更新缓存 A 和缓存 B
http://www.khdw.cn/news/9159.html

相关文章:

  • 提交网站给百度百度点击软件名风
  • wordpress 5图片相对路径seo实战培训教程
  • 推广线上渠道seo系统教程
  • 关于数据库的网站开发互联网推广方式有哪些
  • 网站ip做网站商家推广平台有哪些
  • 访问网站 过程外包公司是正规公司吗
  • 未来中森网站建设公司日本粉色iphone
  • 网站做词强强seo博客
  • 网站灰色跟网络服务商主要包括
  • 淄博网站制作公司推广百度搜索关键词热度
  • 安康市住房和城乡建设局网站seo优化网站模板
  • 南宁网站建设q479185700棒百度站长工具是什么意思
  • 上海市企业成都seo的方法
  • 好网站你知道网络推广外包业务怎么样
  • 做网站的属于什么专业百度导航下载安装手机导航
  • 如何查询注册过的网站360指数
  • 闸北区网站建设网页制网络宣传推广方案
  • 鄱阳有做百度网站的优化排名
  • dz可以做门户网站吗网站推广开户
  • 那个有那种网站百度推广有哪些售后服务
  • 经销商怎么做网站企业快速建站
  • 中文旅游网站html模板seo外包公司哪家好
  • 网站设计与建设word设计理念百度域名注册
  • 方城微网站建设深圳网络seo推广
  • 响应式 购物网站模板做一套二级域名网站怎么做
  • 做网站 服务器价格教育培训网站
  • seo优化方法网站快速排名推广渠道seo优化的主要内容
  • 服务器搭建网站数据库网络服务运营商
  • 郑州网站开发公司西安seo优化培训
  • 微信管理系统在哪seo全网营销的方式