java后端工程师进修ing(研一版‖day51)
今日总结
- java随征录——完成学成在线(2/5)
- 科研随探录——
- 八股随笔录——Redis面试篇(5/7)
- 代码随想录——
目录
今日总结
详细内容
java随征录
科研随探录
八股随笔录
代码随想录
详细内容
java随征录
科研随探录
八股随笔录
- 哨兵机制的选主节点的算法
1. 故障节点主观下线
哨兵集群的每一个哨兵节点会定时对redis集群的所有节点发心跳包节点是否正常,如果长时间没有回复,该redis节点会被主观下线
2. 故障节点客观下线
当节点被一个哨兵节点标记为主观下线时,并不意味着该节点故障了,还需要其他节点共同判断为直观下线才行。如果客观下线的redis节点是从节点或者哨兵节点,则操作到此为止;如果客观下线的redis节点为主节点,则开始故障转移,从从节点中选举一个节点升级为主节点。
3. 哨兵集群选举Leader
如果需要从redis集群选举一个节点为主节点,首先需要从Sentinel集群中选举一个Sentinel节点作为Leader。
- redis集群的模式以及优缺点
当redis缓存数据量大到一台服务器无法缓存时,需要使用redis切片集群。它将数据分布在不同的服务器上,降低系统对单主节点的依赖,从而提高redis服务的读写性能。
redis 集群采用哈希槽来处理数据和节点之间的映射关系。一个切片集群有16384个哈希槽,这些哈希槽类似于数据分区,每个键值对都会根据它的key,被映射到一个哈希槽中。步骤如下:
- 根据键值对的 key,按照 CRC16 算法计算一个 16 bit 的值。
- 再用 16bit 值对 16384 取模,得到 0~16383 范围内的模数,每个模数代表一个相应编号的哈希槽。
接下来的问题就是,这些哈希槽怎么被映射到具体的 Redis 节点上的呢?有两种方案:
- 平均分配: 在使用 cluster create 命令创建 Redis 集群时,Redis 会自动把所有哈希槽平均分布到集群节点上。比如集群中有 9 个节点,则每个节点上槽的个数为 16384/9 个。
- 手动分配: 可以使用 cluster meet 命令手动建立节点间的连接,组成集群,再使用 cluster addslots 命令,指定每个节点上的哈希槽个数。需要注意的是,在手动分配哈希槽时,需要把 16384 个槽都分配完,否则 Redis 集群无法正常工作。
优点:
1.高可用性:节点之间采用了主从复制机制,可以保证数据的持久性和容错能力
2. 高性能:redis集群采用了分片技术,将数据分散到多个节点,从而提高读写性能。
3. 扩展性好:可以根据实际需求动态增加或减少节点,从而实现可扩展性。
缺点;
1.部署和维护较复杂:Redis集群的部署和维护需要考虑到分片规则、节点的布置、主从配置以及故障处理等多个方面
2.集群同步问题:当某些节点失败或者网络出故障,集群中数据同步的问题也会出现。
3.数据分片限制:Redis集群的数据分片也限制了一些功能的实现。由于将数据分散存储到各个节点,某些操作不能跨节点实现,不同节点之间的一些操作需要额外注意。
代码随想录