陳小強
摘要:分布式緩存作為支撐海量數據處理的關鍵技術方案,近年來受到了廣泛關注和應用。本文從分布式緩存系統的工程實踐出發,研究了分布式緩存系統處理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.
(作者單位:中興通訊股份有限公司)