一、生产应用场景

本文介绍了唯品会在后端业务中使用Redis Cluster作为内存存储服务的应用案例,特别是在大数据实时推荐、风控及营销领域的实施细节。通过对比原有Twemproxy三层架构,Redis Cluster简化了存储结构,提升了在线扩容能力,并降低了系统复杂性和瓶颈。
1、业务范围
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 cluster3.1 cluster适合我们后端生产应用场景
  • 在线水平扩展能力,能够解决我们大量的扩容需求。
  • Failover能力和高可用性。
  • 虽然cluster不保证主从数据强一致性,但是后端业务能够容忍failover后少量的数据丢失。

3.2 架构简单
  • 无中心架构,各个节点度等。slave节点提供数据冗余,master节点异常时提升为master。
  • 取代twemproxy三层架构,系统复杂性降低。
  • 可以节约大量的硬件资源,我们的Lvs + Twemproxy层 使用了近上千台物理机器。
  • 少了lvs和twemproxy层,读写性能提升明显。响应时间从100-200us减少到50-100us。
  • 系统瓶颈更少。lvs层网卡和pps吞吐量瓶颈;对于请求长度较大的业务,twemproxy单节点性能低。
    总结下,我们选择redis cluster主要这两点原因:简单、扩展性。另外,我们用cluster取代twemproxy集群,三层架构实在是很令人头疼,复杂、瓶颈多、管理不方面。





本文作者:geelou
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值