mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-17 14:43:43 +08:00
fix img
This commit is contained in:
@@ -273,13 +273,13 @@ function hide_canvas() {
|
||||
<p>Sentinel 在操作故障节点的上下线时,还会通知上游的业务方,整个过程不需要人工干预,可以自动执行。</p>
|
||||
<h3>Redis Cluster 集群</h3>
|
||||
<p>Redis Cluster 是官方的集群方案,是一种无中心的架构,可以整体对外提供服务。</p>
|
||||
<p><img src="assets/CgqCHl8035SAXAiyAAMJUMzoREI936.png" alt="image" /></p>
|
||||
<p><img src="assets/CgqCHl8035SAXAiyAAMJUMzoREI936.png" alt="png" /></p>
|
||||
<p>为什么是无中心呢?因为在 Redis Cluster 集群中,所有 Redis 节点都可以对外提供服务,包括路由分片、负载信息、节点状态维护等所有功能都在 Redis Cluster 中实现。</p>
|
||||
<p>Redis 各实例间通过 Gossip 通信,这样设计的好处是架构清晰、依赖组件少,方便横向扩展,有资料介绍 Redis Cluster 集群可以扩展到 1000 个以上的节点。</p>
|
||||
<p>Redis Cluster 另外一个好处是客户端直接连接服务器,避免了各种 Proxy 中的性能损耗,可以最大限度的保证读写性能。</p>
|
||||
<p>除了 Redis Cluster,另外一个应用比较多的是 Codis 方案,Codis 是国内开源的一个 Redis 集群方案,其作者是个大牛,也是一位技术创业者,不知道你有没有听过最近几年比较火的分布式关系型数据库 TiDB,就来自于作者的公司 PingCAP。</p>
|
||||
<p>Codis 的实现和 Redis Cluster 不同,是一个“中心化的结构”,同时添加了 Codis Proxy 和 Codis Manager。Codis 设计中,是在 Proxy 中实现路由、数据分片等逻辑,Redis 集群作为底层的存储引擎,另外通过 ZooKeeper 维护节点状态,可以参考下面这张 Codis 的官方架构图:</p>
|
||||
<p><img src="assets/Ciqc1F80356AC3hsAAGOBK6892o262.png" alt="image" /></p>
|
||||
<p><img src="assets/Ciqc1F80356AC3hsAAGOBK6892o262.png" alt="png" /></p>
|
||||
<p>之所以提到 Codis,是因为 Codis 和官方的 Redis Cluster 实现思路截然不同,使用 Redis Cluster 方式,数据不经过 Proxy 层,直接访问到对应的节点。</p>
|
||||
<p>Codis 和 Redis Cluster 的集群细节比较复杂,这里不展开讨论,只要简单了解即可,你也可以在课后分别去官网深入了解。就我自己而言,Codis 的监控和数据迁移更加简便,感觉 Codis 的设计更加合理,不过也是见仁见智,欢迎分享你的思考。</p>
|
||||
<p>Redis Cluster 划分了 16384 个槽位,每个节点负责其中的一部分数据,都会存储槽位的信息,当客户端链接时,会获得槽位信息。如果需要访问某个具体的数据 Key,就可以根据本地的槽位来确定需要连接的节点。</p>
|
||||
|
||||
Reference in New Issue
Block a user