复制集群架构设计技巧
Redis Sentinel 设计技巧
哨兵的作用
监控redis节点的状态
可以通过api进行集群状态通知
实现故障自动切换
为client提供了master发现功能,当发生master切换时通知client
raft算法
双节点架构(注意quorum ,majority配置)
单节点redis异常正常切换master
单点服务器宕机,则宕机
双节点通信异常,脑裂
三节点架构(注意quorum ,majority配置)
单个服务器宕机 正常切换master
master与其他机器网络通信异常,可能出现双主--配置最小复制节点 min-replicas-to-write 1; min-replicas-max-lag 10
分离部署(注意quorum ,majority配置)
哨兵和redis分开部署,redis客户端与哨兵部署不限制
仅当哨兵(有一个即可)与redis的master节点形成分区,可能发生脑裂
MongoDB Replication 设计技巧
primary节点处理所有请求 secondary处理读请求或者复制数据
异步复制,oplog
3.2后raft算法,最多支持50个节点,但是做多仅7个节点参与选举
新节点的同步流程
寻找同步源,mangodb支持级联复制,不一定是primary,由算法掌控
全量复制数据和oplog
同步全量复制后的增量数据,异步复制oplog
read preference
默认读primary,指定read preference 读取secondary
可能读取不到最新数据
事务必须读取primary
包含五种preference:primary,primaryPreferred, secondary,secondaryPreferred, nearest.
通过Api或者连接配置参数
Arbiter
只投票不复制数据
相当于仲裁者