企业电子网站建设,成都网站seo外包,门户网站静态页面,如何在百度里做推广网站提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Redis单点故障二、红锁原理三、Redission实现了红锁一、Redis单点故障
单台redis容易出单点故障采用集群,获取到锁之后数据持久化到rdb,aof文件中从节点有可能在从主节点拿到数据之前,主节点… 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Redis单点故障二、红锁原理三、Redission实现了红锁 一、Redis单点故障
单台redis容易出单点故障采用集群,获取到锁之后数据持久化到rdb,aof文件中从节点有可能在从主节点拿到数据之前,主节点就已经挂了,sentinel哨兵机制把从节点选为主节点,此时数据还没有拉取到新的主节点上,新主节点还不知道已经有线程拿到了锁,此时就有两个线程获取到了锁,分布式锁就失效了。
解决点单故障方式:引入红锁机制
二、红锁原理
用Redis中的多个master实例,来获取锁,只有大多数实例获取到了锁,才算是获取成功。具体的红锁算法分为以下五步:
获取当前的时间(单位是毫秒)。使用相同的key和随机值在N个节点上请求锁。这里获取锁的尝试时间要远远小于锁的超时时间,防止某个masterDown了,我们还在不断的获取锁,而被阻塞过长的时间。只有在大多数节点上获取到了锁,而且总的获取时间小于锁的超时时间的情况下,认为锁获取成功了。如果锁获取成功了#x