Redis 的哨兵模式为什么还有人用?

2020-08-07 10:54:12 +08:00
 zero47

Redis 的高可用方案有两种,哨兵和集群。

个人浅薄理解,哨兵模式就是创建一个备胎,备胎同步 master 数据,在 master 出现异常的时候进行切换。

而集群则是创建一个 slave,slave 同步 master 数据,可用于客户端读取,在 master 出现异常的时候进行选举切换为 master 。集群模式要求最少 3 个 master 节点,master 节点间分槽管理数据。

在正常情况下,哨兵就是个吃白饭的,没有任何作用,而集群的 slave 则参与读操作。

怎么看都是集群完胜啊,为啥还有人在坚持维护哨兵模式呢(比如 helm 的 redis-ha)?

17720 次点击
所在节点    Redis
79 条回复
KaynW
2020-08-07 10:59:30 +08:00
redis 小白占坑
Ariver
2020-08-07 11:03:26 +08:00
cluster 是怎么实现高可用的?
edk24
2020-08-07 11:04:56 +08:00
redis 小白占坑 坐等大佬讲解
0x49
2020-08-07 11:06:22 +08:00
坐等大佬讲解
wangyanrui
2020-08-07 11:06:43 +08:00
一脸懵逼??
哨兵是哨兵,集群是集群。
哨兵是找一个人,专门看管这群人
集群是一个人干不完活,多找几个人干活的

感觉楼主都没有明白这两个模式的字面意思啊
misaka19000
2020-08-07 11:07:31 +08:00
因为低版本不支持集群
misaka19000
2020-08-07 11:08:35 +08:00
哨兵模式的 slave 也可以读数据的
monsterxx03
2020-08-07 11:10:23 +08:00
Cluster 要求客户端实现 smart client,以前基于单机 redis 的应用不一定好迁移,比如 celery 的 redis broker 就不支持 cluster 。cluster 对 mset,mget ,pipeline 这些支持不好(key 必须处于同一 slot)。sentinel 只是维护下集群状态,自己不耗多少资源。cluster 里如果有超级大的 key,会让数据分布不均匀,可能还不如让这样的应用用一个单独的 redis 。数据不超过单机内存的话,用 sentinel 也没啥问题
sujin190
2020-08-07 11:13:53 +08:00
哨兵单独进程,并不保存数据吧,也几乎不占内存,可以和 slave 部署在一起,那么看起来其实也是可以提供读取的吧,但是吧基于一致性和持久化性能要求,真的有人会在 slave 上提供读服务么
useben
2020-08-07 11:15:08 +08:00
你对 redis cluster 的理解错了, 集群的核心是分片
Jrue0011
2020-08-07 11:15:19 +08:00
稍微搜了下,感觉这两个的关系应该是这样的?
主从加哨兵实现高可用,cluster 集群内部貌似也是用主从加哨兵做高可用,只不过 cluster 还同时做好了负载均衡
DaBingShui
2020-08-07 11:17:58 +08:00
哨兵模式是 redis2.x 的吧,现在 redis3.x 一般都用集群了
wangyzj
2020-08-07 11:37:57 +08:00
cluster 是横向扩展比较好
烧饼是高可用比较好
各取所需
TypeError
2020-08-07 11:40:55 +08:00
用途不一样,用哨兵基本没分片需求,主从监控一下就行
egglin
2020-08-07 11:45:37 +08:00
个人理解主从用哨兵,分片用集群
yiyi11
2020-08-07 12:03:25 +08:00
本质就是有没有数据分片需求,sentinel 只提供高可用,cluster 提供高可用+数据分片。其实 cluster 比较香是因为,redis 足够轻量,搭建部署足够简单,搭建 cluster 并不比 sentinel 麻烦很多,但却多了分片的好处(扩展性)。
zero47
2020-08-07 12:03:30 +08:00
@wangyanrui 我当然知道是两个东西,但几个人干活也能互相监督,谁倒了就谁顶上,不就不需要哨兵了吗?我的观点是集群是否可以取缔哨兵,而不是说他们是一个东西。
optional
2020-08-07 12:34:04 +08:00
分片是有代价的, 不是无痛的。
672795574
2020-08-07 12:34:23 +08:00
个人见解
哨兵最少只要三个节点即可
哨兵可以不和集群部署在一起
672795574
2020-08-07 12:41:10 +08:00
你说的方案应该是可以的,但是架构又没有银弹,只是 redis 官方提供了这个方案而已

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696387

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX