Redis原理学习

2020-05-19  本文已影响0人  抬头挺胸才算活着

为什么 Redis 先执行指令再记录aof日志而不是像其它存储引擎一样反过来呢?

删掉很多key之后内存减少不是很多?

操作系统回收的时候是以页面为单位,这些 key 分散到了很多页面中,每个页面都还有其它 key 存在,这就导致了内存不会立即被回收。

多个Codis一起负载均衡

1·### 选举过程
接着上边说,当主服务器节点挂了,Sentinel系统就会选出一个领头的Sentinel来完成故障转移工作。选举规则如下: - 监视这个挂了的主节点的所有Sentinel都有被选举为领头的资格
每进行一次选举,不论是否成功,配置纪元+1,配置纪元就是个计数器
每个Sentinel在每个配置纪元中有且仅有一次选举机会,一旦选好了该节点认为的主节点,在这个纪元内,不可以再更改
每个发现服务器挂了的Sentinel都会配置纪元+1并投自己一票,接着发消息要求其他Sentinel设置自己为领头人1,每个Sentinel都想成为领头的
每个Sentinel会将最先发来请求领头的节点设为自己的领头节点并发送回复,谁先来我选谁
当源Sentinel收到回复,并且回复中的配置纪元和自己的一致且领头Id是自己的Sentinel Id时,表明目标Sentinel已经将自己设为领头
在一个配置纪元内,当某个Sentinel收到半数以上的同意回复时,它就是领头的了
如果在给定时间内,没有被成功选举的Sentinel,那么过段时间发起新的选举

选举领头Sentinel的过程和规则大概就如上所述,需要注意的是只有集群出现节点挂了才需要选举出领头Sentinel,平时每个Sentinel还是平等身份~

这里的选举其实是raft算法的一个应用,有兴趣的小伙伴可以去读下这篇算法的论文

上一篇下一篇

猜你喜欢

热点阅读