1、业务范围
redis cluster在唯品会主要应用于后端业务,用作内存存储服务。主要大数据实时推荐/ETL、风控、营销三大业使用。cluster用于取代当前twemproxy三层架构,作为通用的存储架构。redis cluster可以大幅度简化我们的存储架构,也解决twemproxy架构无法在线扩容节点的问题。目前我们在线有生产几十个cluster集群,约2千个instances,单个集群最大达到250+instances。
这是我们的生产应用场景,主要是后端业务的存储,目前没有作为cache使用的场景。
2、大数据、风控、营销系统的特征
3、为什么选择redis cluster 3.1 cluster适合我们后端生产应用场景
redis cluster在唯品会主要应用于后端业务,用作内存存储服务。主要大数据实时推荐/ETL、风控、营销三大业使用。cluster用于取代当前twemproxy三层架构,作为通用的存储架构。redis cluster可以大幅度简化我们的存储架构,也解决twemproxy架构无法在线扩容节点的问题。目前我们在线有生产几十个cluster集群,约2千个instances,单个集群最大达到250+instances。
这是我们的生产应用场景,主要是后端业务的存储,目前没有作为cache使用的场景。
2、大数据、风控、营销系统的特征
- cluster作为数据量大, 单个cluster集群在几十个GB到上TB级别内存存储量。
- 作为后端应用的存储,数据来源主要以下三种方式:
- Kafka --> Redis Cluster,Storm/Spark实时
- Hive --> Redis Cluster, MapReduce程序
- MySQL --> Redis Cluster,Java/C++程序。
- 数据由离线/实时job生成, 读写请求量大, 对读写性能也要求高。
- 业务高峰期请求量急剧上升,几倍的读写量增加,需要多个redis实例承担业务的读写压力。
- 业务需求变化快, schema变化频繁。如果使用MySQL作为存储,那么将会是频繁的DLL变更,而且需要做online schema change。
- 大促销活动时扩容频繁。
3、为什么选择redis cluster 3.1 cluster适合我们后端生产应用场景
- 在线水平扩展能力,能够解决我们大量的扩容需求。
- Failover能力和高可用性。
- 虽然cluster不保证主从数据强一致性,但是后端业务能够容忍failover后少量的数据丢失。
- 无中心架构,各个节点度等。slave节点提供数据冗余,master节点异常时提升为master。
- 取代twemproxy三层架构,系统复杂性降低。
- 可以节约大量的硬件资源,我们的Lvs + Twemproxy层 使用了近上千台物理机器。
- 少了lvs和twemproxy层,读写性能提升明显。响应时间从100-200us减少到50-100us。
- 系统瓶颈更少。lvs层网卡和pps吞吐量瓶颈;对于请求长度较大的业务,twemproxy单节点性能低。
总结下,我们选择redis cluster主要这两点原因:简单、扩展性。另外,我们用cluster取代twemproxy集群,三层架构实在是很令人头疼,复杂、瓶颈多、管理不方面。
本文作者:geelou
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。