从上面问题解决方案的分析可以看出,Proxy层的保留还是有其必要性的:
- 协议解析
- 实现Cluster协议,屏蔽影响
- 维护到后端的长连接
- 安全过滤
- 命令白名单
- 安全权限过滤
- 负载均衡
- Presharding哈希函数
- 缓存Slot路由表
- 控制Resharding算法和方式
- 结果聚合
- MultiOp支持
- Pipeline支持
- 读写分离
- 读压力分摊,避免Slave“冷备”
- 读压力分摊,避免Slave“冷备”
- 层次化存储
- 冷数据Swap到慢存储
- L1缓存实现
- 监控管理
- 状态的监控、历史报告
- 阈值的设置、预警
既然保留了Proxy组件,Redis Cluster的优势就不明显了。那为什么后端还要用Redis Cluster而不是单机版的Redis呢?因为Redis Cluster给我们带来几个最大的好处:
- 自动故障转移:不再需要额外的Sentinel集群
- 官方的Slot实现:不修改Redis源码就得到Slot实现及常用操作
- 被动保证Slot一致性:Redis负责访问了旧结点的客户端的重定向
- 迁移中的数据访问:Redis负责访问迁移中数据的客户端的重定向
一个美观而实用的Dashboard完全有理由让用户抛弃redis-trib,要是再具有自动部署和Resharding算法那就更完美了!
4.1.3 Agent组件Agent不仅可以完成运行数据采集,仅仅这样的话Dashboard完全可以自己完成。它还可以完成Redis Cluster的部署工作,这样就能大大降低开发人员的工作量和手工出错的概率。
本文作者:geelou
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。