PS: 其实这两个都好久没更新了,其中Codis上一次提交更新还是四年前,Twemproxy 则是21年7月
1. Twemproxy 集群模式
官方介绍: https://github.com/twitter/twemproxy
1.1 Twemproxy 通用集群架构

1.2 路由分片
-
一致性hash
-
固定slot
-
随机路由
1.3 副本模式
原生redis主从同步模式: 异步复制
-
副本探活
-
副本切换
1.4 弹性伸缩
twemproxy并没有集成后端节点的水平伸缩,目前比较好适配的是垂直扩缩容(即只是更改原有节点的物理内存容量规格,不涉及集群数据水平方向的迁移)

1.5 数据一致性
- 主从切换一致性
使用Redis主从异步复制,所以属于弱一致性 - 数据迁移一致性
需要看具体实现,—般都是能保障迁移过程中读写一致性
1.6 性能
-对比Redis,单个请求链路因为增加了更多的中间组件,所以延时有增高;
- 因为proxy整体对请求进行了路由分发以及相关内部打包等机制,整体吞吐下降10%+
- 但是proxy整体是无状态的,所以proxy不会成为性能瓶颈,可以水平线性扩展集群性能(瓶颈还是取决于后端redis实例个数)
1.7 友好度
-
Redis协议支持
https://github.com/twitter/twemproxy/blob/master/notes/redis.md -
接入支持
twemproxy实现了Redis协议接口,所以对于通用的Redis客户端都是适用的
2. Codis 集群模式
官方介绍: https://github.com/CodisLabs/codis
2.1 Codis 集群架构

2.2 路由分片
-
固定slot
2.3 副本模式
-
副本同步
原生redis 主从同步模式:异步复制,支持多副本 -
副本探活
-
副本切换
2.4 弹性伸缩
-
水平伸缩
2.5 数据一致性
-
主从切换一致性
使用Redis主从异步复制,所以属于弱一致性 -
数据迁移


2.6 性能
- 对比Redis,单个请求链路因为增加了更多的中间组件,所以延时有增高;
- 因为proxy整体对请求进行了路由分发以及相关内部打包等机制,整体吞吐下降10%+
- 但是proxy整体是无状态的,所以proxy不会成为性能瓶颈,可以水平线性扩展集群性能(瓶颈还是取决于后端redis实例个数)
2.7 友好度
- Redis协议支持
https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md 不支持的列表 - 接入支持
- 自带jodis客户端
- 如果是通用客户端需要实现zookeeper相关交互接口,获取后端proxy,并进行负载均衡
如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~
网友评论