Q&A
Q1:没用 Cluster 的模式吗?
A:没有,最早也使用过 Cluster 模式,后来业务体量变大,发现 Cluster 有集群规模上限,不能满足业务的需求 。
Q2:Redis 的 Proxy 会计算 Key 在哪个分片吗?
A:会的,Proxy 会参考类似 Redis Cluster 的 Key Hash 算法对 Key 进行 hash,之后分布到不同的 Server 分片上 。
Q3:如何界定 Slave 可以提升为 Master?切换步骤是怎样的?
A:Configserver 会定期给 Master 发送 health check 请求进行探活 。只有连续多次对一个 Master 的探活都失败时,才会认为 Master 不可用 。这时 Configserver 会从分片内所有 Slave 中选择可用的提升成新的 Master(不是所有的 Slave 都可用,可能某一个 Slave 也挂了,或者主从数据同步的延迟比较高) 。
Q4:Proxy 是每个 Redis 集群独有还是所有集群共享的?
A:Proxy 不是每个 Redis 集群独占的 。首先,所有集群共享一个 Proxy 集群,有隔离性的问题 。另外,Proxy 支持动态扩缩容,可以做到弹性资源扩缩容,所以不会导致资源浪费 。
Q5:系统的稳定性如何,主从切换耗时怎样?
A:稳定性挺好 。主从切换的耗时是一个策略问题,需要做一些 tradeoff 。如果判断策略太激进,可能会因为临时的网络抖动等因素频繁触发主从切换 。实际使用中我们的主从切换耗时在 10s 左右 。
Q6:Redis 在什么规模等级下的 K8s 部署会需要修改较多默认配置或者直接更改源码? 在动态扩容的基础上建立 Redis 集群是否会加大困难?有什么方式可以让 Redis 集群无限扩容吗?最多到多少?
A:Redis 目前部署的 K8s 集群规模可选,根据需要的 Redis 集群容量来选择 K8s 规模就可以 。适配云原生会需要调整一些组件之间的服务发现方式,但是不需要太多源码的修改 。我们目前只支持 Proxy 的动态扩缩容,Server 是有状态的服务,还不太好接入 HPA(因为可能会涉及到一些数据的迁移),虽然 HPA 也支持对 Statefulset 服务的自动化扩缩容 。我们的 Redis 架构理论上集群的规模可以很大,现在 CRD 的限制是一个 Redis 集群最多 1024 个分片 。
关于火山引擎火山引擎是字节跳动旗下的数字服务与智能科技品牌,基于公司服务数亿用户的大数据、人工智能和基础服务等技术能力,为企业提供系统化的全链路解决方案,助力企业务实地创新,给企业带来持续、快速增长 。
推荐阅读
- 一篇详解Redis -- 延时队列
- python 手把手教你基于搜索引擎实现文章查重
- 克柳切夫火山喷发 克柳切夫火山喷出6000米高灰柱
- 历史上火山最大的喷发 世界上最大的一次火山喷发
- 哪座火山爆发毁灭了古罗马的庞贝城 哪个火山摧毁了古罗马的庞贝城
- 哪个火山的爆发毁灭了古罗马帝国的庞贝城?
- 马达加斯加岛是火山岛吗 阿拉斯加湖泊的形成
- 开发人员如何快速定制化实现一个基于Solr的搜索引擎
- 网易考拉规则引擎平台架构设计与实践
- Redis集群的5种使用方式,及各自优缺点对比分析