陈小强
摘要:分布式缓存作为支撑海量数据处理的关键技术方案,近年来受到了广泛关注和应用。本文从分布式缓存系统的工程实践出发,研究了分布式缓存系统处理Hot Key的关键技术,提出了一种分布式缓存系统优化设计,通过动态识别、自动重分布等设计,解决了Hot Key问题,同时提高了分布式缓存系统的性能、稳定性和适用性。实验验证和商用环境实际效果证明,相比传统分布式缓存系统,采用上述技术优化后分布式缓存系统提升是有效的。
关键词:数据库;分布式缓存;NoSQL;云计算;Hot Key;热点数据
1分布式缓存系统Hot Key优化设计及关键技术
分布式缓存[1]基于键-值型(Key-Value)[2]数据模型,是业界目前最广泛的一种NoSQL[3],其最大的优势在于对高并发的支持和它的可扩展性。分布式缓存的代表有开源的Redis[4]、memcached[5],亚马逊的dynamo[6],淘宝的Tair等。这些分布式缓存系统使用的数据分布算法主要有一致性Hash[7]或基于Range分区两种,但是只能保证数据分布的均衡,不能保证分布式缓存系统运行中实际数据访问的均衡,即存在Hot Key,常见场景有两类:
1)新闻APP中的热点新闻内容
2)电子商城秒杀系统中,最吸引用户眼球,性价比最高的商品信息
Hot Key导致主要问题是缓存雪崩:大量的客户端,大量的读请求集中同时访问分布式缓存系统的某个服务节点,导致服务节点响应时延逐渐加大,直至不能对外提供服务,即缓存雪崩。针对上述痛点,本文提出了一种优化的分布式缓存系统设计,创新的功能有动态识别Hot Key,识别出的Hot Key在分布式缓存系统中自动重分布,用更多节点、更多线程承担Hot Key的读取请求,这样系统地解决了Hot Key带来的缓存雪崩。下面介绍这些关键技术的原理和实现。
1.1动态识别
为了动态统计Key的访问情况,在描述Key的结构中增加访问时间和访问频率两个成员,动态识别Hot Key流程如下:
1)Client向分布式缓存系统的服务节点发起一个读请求
2)服务节点在索引中查询Key
3)Key没有查询到,直接给Client回响应,流程结束
4)Key查询到了,将Key的访问计数加1,更新访问时间
5)如果访问时间中统计周期发生变化(统计周期缺省是分钟),并且访问计数小于配置的最大QPS(每秒最大访问量),则给Client回响应,否则执行下一步
6)识别出一个Hot Key,将Key访问计数清零,开始一个新的统计周期
7)Hot Key开始自动重分布
8)给Client回响应,响应中包含Hot Key最新的分布节点信息以及过期时间,后续Client访问该Key时,如果Key没有过期则需要根据最新的分布节点信息重新计算服务节点
1.2自动重分布
动态识别出Hot Key后,必须进一步将Hot Key自动重新分布,分布到更多节点上,并分配更多的线程负责Hot Key的读取,为此在描述Key的结构中增加节点和线程信息:[< Node1,Thread1>......
Node:Hot Key分布的节点。
Thread:节点上负责这个Hot key的读取线程数。
举个例子,一个拥有5个节点,数据是3副本的分布式缓存系统中,对一个非Hot Key来说其分布信息:[< Node1,1>,
2总结
本文从实际工程问题和需求出发,针对分布式缓存系统处理Hot Key的关键技术进行研究。通过动态识别、自动重分布等设计,提高了分布式缓存系统的性能和稳定性,能更好地适应Hot Key场景。通过和传统分布式缓存系统对比实验验证,以及商用生产环境的实际使用效果,都证明了采用上述关键技术后的分布式缓存系统提升是有效的。优化后的分布式缓存系统在动态识别Hot Key时QPS阈值等是固定配置好的,不满足业务场景的多样化,还有进一步的优化空间,可以引入人工智能确定QPS阈值,动态识别向智能识别演进是我们下一步的工作方向。
参考文献
[1]于君泽 曹洪伟 邱硕等. 深入分布式缓存从原理到实践[M].北京:机械工业出版社,2018
[2]马文龙,朱妤晴,蒋德钧等. Key-Value型NoSQL本地存储系统研究[J]. 计算机学报,2018,41(8):1722-1751.
[3]NoSQL. Wikipedia. 2017. https://en.wikipedia.org/wiki/NoSQL
[4]姚经纬,杨福军. Redis分布式缓存技术在Hadoop平台上的应用[J]. 计算机技术与发展,2017,27(6):146-150.
[5]安仲奇,杜昊,李强等.基于高性能I/O技术的Memcached优化研究[J].计算机研究与发展,2018,55(4):864-874.
[6]Decandia G,Hastorun D,Jampani M,et al. Dynamo:amazon's highly available key-value store[J]. ACM SIGOPS Operating Systems Review,2007,41(6):205-220.
[7]Robert Sedgewick.《算法》英文版第4版[M].人民邮电出版社,2012,ISBN:9787115271464.
(作者单位:中興通讯股份有限公司)
科学与技术2018年15期