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

凡科轻站小程序收费吗百度搜索量查询

凡科轻站小程序收费吗,百度搜索量查询,什么网站可以做期刊封面,wordpress站迁移后速度慢文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常?**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么?3.分片集…

文章目录

  • Redis分布式锁的实现原理
    • Redis实现分布式锁如何合理的控制锁的有效时常?
    • **redisson实现的分布式锁**
    • redisson实现的如何保证主从一致性
  • Redis的集群方案
    • 1.主从复制
      • 主从数据的同步原理
        • 全量同步
        • 增量同步
    • 2.哨兵模式
    • Redis的集群脑裂是什么?
    • 3.分片集群

Redis分布式锁的实现原理

Redis实现分布式锁主要利用Redis的setnx(SET if not exists)命令,】

  • 获取锁
# 添加锁 NX 是互斥 EX是设置超时时间
SET lock value NX EX 10
  • 释放锁
# 释放锁 删除即可
DEL key

Redis实现分布式锁如何合理的控制锁的有效时常?

  • 根据业务执行时间预估
    这个时间不好控制,时间长或短都会对业务造成影响
  • 给锁延期
    我们可以添加一个线程来监控当前线程,如果业务还未完成,就给锁延期,如果业务完成,就释放锁。

有些许麻烦,还需要我们自己创建一个线程,这里有一个现成的解决方案,那就是redisson是实现的分布式锁


redisson实现的分布式锁

redisson实现的锁是可重入的,底层使用hash结构来完成锁的重入。
将锁名作为Key
将线程名和锁可重入的次数作为Value

在这里插入图片描述

redisson实现的如何保证主从一致性

RedLOck(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2 +1),避免在一个redis实例上上锁

  • 获取锁时,向多个 Redis 节点中获取锁,只有每个节点都获取锁成功,才算-获取锁成功。实现了,只要有一个节点存活,其他线程就不能获取锁,锁不会失效。

  • 当其中有节点宕机时,其他节点仍然含有锁信息,其他节点仍然有效

Redis的集群方案

1.主从复制

搭建主从集群,实现读写分离

在这里插入图片描述

主从数据的同步原理

全量同步

主从全量同步
Replication Id: 简称replid,是数据集的标记,id一致说明是同一个数据集,每一个master都有唯一的replid,slave则会继承master节点的replid
offset: 偏移量,随着记录在repl_baklog中的数据增多而逐渐增大,slave完成同步时也会记录当前同步的offset,如果slave的ofset小于master的offset,说明slave数据落后于master,需要更新

在这里插入图片描述

  1. 从节点请求主节点同步数据,(replication id,offset)
  2. 主节点判断是否是第一次请求,是的话就同步版本信息(replication id 和 offset)
  3. 主节点执行bgsave,生成RDB文件,发送给从节点执行
  4. 在RDB执行期间,主节点会以命令的形式记录到缓冲区(日志文件)
  5. 把生成的日志文件发送给从节点同步
增量同步

主从增量同步(slave重启或后期数据变化)
在这里插入图片描述
1.从节点请求主节点建立连接,主节点判断不是第一次连接,就获取从节点的offset
2. 主节点从日志文件中获取offset之后的值,发送给从节点进行同步

2.哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复

  • 监控: Sentinel会不断检查master和slave是否按照与其工作

Sentinel基于心跳监测服务状态,每隔一秒向集群的每个实例发送一个ping命令
主观下线: 如果某个Sentinel发现某实例未在规定时间内响应,则认为该实例主观下线
客观下线: 超过指定数量(quorum)的sentinel都认为该实例主观下线,则认为该实例客观下线,quorum的值最好超过Sentinel实例数量的一半

  • 自动故障恢复: 如果master故障,Sentinel会将一个slave提升为master,当故障实例恢复后也以新的master为主

哨兵选主原则

  • 首先判断主从节点断开时间长短,如超过指定值就排除该从节点不会被提升为主节点
    判断从节点的slave-priority值,越小优先级越高
    如果slave-priority一样,则判断slave节点的offset值,越大优先级越高
    最后是判断slave节点的运行id大小,越小优先级越高
  • 通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
    在这里插入图片描述

Redis的集群脑裂是什么?

集群脑裂是由于主节点和从节点和sentinel处于不同的网络分区,使得sentinel没有能够心跳感知到主节点,所以通过选举的方式提升了一个从节点为主节点,这样就存在了两个master,这样就会导致客户端还在旧的主节点哪里写入数据,新节点无法同步数据,当网络恢复后,sentinel会将旧的主节点降为从节点,再从新的master中同步数据,就会导致数据丢失

解决方案:
修改redis的配置,设置最少的从节点数量以及缩短主从数据同步的延迟时间,达不到要求就拒绝请求,就可以避免大量的数据丢失。

# 表示最少的slave节点为1个
min-replicas-to-write 1 # 表示数据复制和同步的延迟不能超过5秒
min-replicas-max-lag 5

小结:
主从和哨兵可以解决高可用,高并发读的问题
但是当出现数据量很多或者需要高并发写的场景时,主从和哨兵模式就会吃力。 为了解决这个问题,引入分片集群的概念

3.分片集群

分片集群:

  • 集群中有多个master,每个master保存不同的数据
  • 每个master有自己的slave节点
  • master之间通过ping来监测彼此的健康状态
  • 客户端的请求可以访问集群任意节点,最终都会被转发到正确节点

工作细节:

  • Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽
  • 将16384个哈希槽分配到不同的master实例上
  • 读写数据:根据key的有效部分计算哈希值(有效部分:如果key前有大括号,那么有效部分就是大括号内的内容,如果没有,则以key本身作为有效部分),对16384取余,余数为插槽,寻找插槽所在的实例
http://www.hkea.cn/news/350407/

相关文章:

  • 网站如何做引流刷外链网站
  • wordpress 站点地址关注公众号一单一结兼职
  • 合肥网站建设第一品牌个人seo外包
  • 省心的免费建站服务热线四川seo关键词工具
  • 网站总是跳转dede58seo对网络推广的作用是
  • seo排名怎么提高seo排名优化软件有用
  • 江门论坛建站模板黑帽seo联系方式
  • 政府网站信息内容建设专项检查搜索引擎排名优化seo课后题
  • 个人做的好的淘宝客网站软文营销推广
  • 城乡建设委员会网站河北seo推广公司
  • 某网站栏目策划2022十大热点事件及评析
  • 德清网站建设中心优化大师官方免费下载
  • 生日网页制作免费网站制作代做网页设计平台
  • 学校类网站特点游戏优化大师官网
  • 手机电视网站大全河南网站建设定制
  • zblog做的商城网站上海有实力的seo推广咨询
  • 免费网站模板psd网络营销的整体概念
  • 网站模板下载破解版环球军事新闻最新消息
  • 徐汇苏州网站建设东莞免费建站公司
  • 厦门网站建设哪家强深圳网站维护
  • 政府网站新媒体平台建设关键词权重查询
  • 重庆网站建设制作公司百度客服人工在线咨询电话
  • 微信公众号平台入口官网奶盘seo伪原创工具
  • 泉州网站建设公司推荐宁德市地图
  • 大厂县住房和城乡建设局网站刷百度指数
  • 低代码开发平台优缺点昆山seo网站优化软件
  • 网站开发年终总结网络营销战略的内容
  • 建立门户网站的意义营销推广网
  • 网站建设网站软件有哪些百度推广开户费用标准
  • 找家装修公司家装吉林seo外包