redis分布式
来源:互联网 发布:2016coc双王升级数据 编辑:程序博客网 时间:2024/05/17 07:30
概述
Redis哨兵为Redis提供了高可用性。可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。
哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。
下面是在宏观层面上哨兵模式的功能列表:
- 监控:哨兵不断的检查master和slave是否正常的运行。
- 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
- 自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
- 配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。
特性
Redis哨兵是一个分布式系统:
哨兵自身设计成和多个哨兵进程一起合作运行。这样做的好处有:
- 当多个哨兵对一个master不再可用达成一致时执行故障检测。这会降低错误判断的概率。
- 只要大多数哨兵正常运行就可以,增强系统健壮性。毕竟在故障系统里单点故障没有什么意义。
哨兵部署和故障转移过程
下面以部署三个哨兵为例(配置quorum = 2):
- Box:代表服务器
- Redis:代表Redis实例
- Sentinel:代表Redis哨兵实例
- Client:代表连接到Redis的客户端
- Redis1:为master
- Redis2和Redis3为Redis1的Slave
- 其中三个哨兵都监控Master1;
下面是Box1主机发生故障之后的转移过程:
- Sentinel2检测到Box1故障,标记状态为SDOWN;
- Sentinel3检测到Box1故障,标记状态为SDOWN;
- 因标记SDOWN状态数量 >= 配置的quorum ,标记Redis实例状态为ODOWN,触发故障转移;
- 通过算法选举出一个Leader(如Sentinel2);
- Sentinel2请求其他Sentinel(Sentinel3)的授权(注意这里需要得到半数以上的哨兵授权);
- Sentinel2得到授权后通过算法选举出合适的Slave(如Slave2)晋升为Master;
- Sentinel更改配置监听新Master,并把其他的Redis配置为新Master的Slave;
- 通知客户端连接新Master。
使用
使用之前需要知道的事情
- 一个健壮的部署至少需要三个哨兵实例
- 三个哨兵实例最好放在三个不同的物理机上
- 使用的客户端必须支持哨兵(一般流行的都支持)
服务端配置(运维部同事需仔细看看)
客户端代码示例
使用哨兵代码非常简单,只需要在客户端改动一下连接方式即可(注意连接的是哨兵的地址)
阅读全文
0 0
- Redis分布式
- Redis 分布式
- redis分布式
- redis 分布式,主从同步
- redis 分布式,主从同步
- Redis实现分布式锁
- 分布式Redis搭建案例
- Redis分布式集群
- Redis 分布式锁实现
- Redis 分布式锁实现
- 分布式Redis集群解决方案
- 分布式Redis集群解决方案
- redis 分布式锁
- redis分布式锁
- Redis实现分布式存储
- Redis实现分布式锁
- Redis分布式锁思考
- redis实现分布式锁
- 一维数值与指针的问题关系
- tensorflow 权重初始化
- 圆桌问题
- java性能优化
- HDU
- redis分布式
- 文章标题
- Go的基本数据类型
- <C语言>结构体的参数传递和指针传递(注释详解)
- 牛客网华为在线训练---计算字符个数
- 111
- 基于maven发送邮件系列(1)--简单发送邮件
- hdu6106--Classes
- 正则表达式