- Twemproxy 集群模式
twemproxy (nutcracker)
A fast, light-weight proxy for memcached and redis
https://github.com/twitter/twemproxy
1.1 Twemproxy 通用集群架构
![](https://img.haomeiwen.com/i12979420/87500151f5b96bde.png)
1.2 路由分片
-
一致性hash
image.png
-
固定slot
image.png
-
随机路由
image.png
1.3 副本模式
原生redis主从同步模式: 异步复制
-
副本探活
image.png
-
副本切换
image.png
1.4 弹性伸缩
twemproxy并没有集成后端节点的水平伸缩,目前比较好适配的是垂直扩缩容(即只是更改原有节点的物理内存容量规格,不涉及集群数据水平方向的迁移)
![](https://img.haomeiwen.com/i12979420/96a562d04f92cdb9.png)
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客户端都是适用的
网友评论