写了一篇对 redis cluster 实现方式以及其他其他方案的对比文章

2019-02-17 15:26:07 +08:00
 oncewosiwo

Redis Cluster 是一个分布式系统。由多个 Redis 实例组成的整体,数据按照 Slot 存储分布在多个 Redis 实例上,通过 Gossip 协议来进行节点之间通信。

整理理解

哈希方案:slot(槽位)

Redis Cluster 中有一个 16384 长度的槽的概念,每个 key 都会通过公式 CRC16(key) % 16384 来计算键 key 属于哪个槽,槽位是虚拟的,可以在不同节点之前迁移

集群通信

cluster 服务端节点直接使用 gossip 协议进行节点间通信(redis cluster 这种单纯的哈希分布的方案下,好像除了交换节点存活情况和槽位信息,服务端节点之间的数据交互需求并不高,感觉不如谷歌大数据老三篇论文里面的弱 master 节点的设计,能节省很多不必要的节点通信)

slot 槽位的迁移

几种方案的对比

总结

参考:

Codis 的设计与实现 Part 1

Tidis - 基于 tikv 实现兼容 redis 协议分布式事务存储

黄光星:Redis Cluster 原理与管理

2386 次点击
所在节点    程序员
3 条回复
haiyangcn
2019-02-18 10:06:18 +08:00
请教一个问题:有什么方案可以实现:redis 分布式部署,并且可以多写(在任意节点写入后同步到其他节点)
oncewosiwo
2019-02-18 10:19:22 +08:00
@haiyangcn 好像目前并没有符合“任意节点写入”这个一条的方案,codis 是一个中心的代理服务器来接收所有请求,redis cluster 里的节点只接收其所管理的槽位下的 key 的请求。如果单纯说多节点写入的话,redis cluster 算是符合要求,客户端会自动将请求发送到对应的节点中,也会将请求同步到这个节点的从节点上
MarkrMelon
2021-04-25 16:49:14 +08:00
可以转载吗, 家里的网访问不了 v2

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

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

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

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

© 2021 V2EX