李映
摘要:本文對基于Redis的分布式緩存技術進行了詳細分析,并闡述了基于Redis的分布式緩存管理技術CacheManager。CacheManager實現了分布式緩存的自動接入部署、彈性伸縮擴容與全面監控等各項管理運維功能,有效地提升了系統運維人員的維護效率,加強了分布式緩存的可用性與穩定性。
關鍵詞:分布式系統;高并發;Redis;緩存集群
一、引言
隨著電子商務在移動互聯網時代的迅速發展,各種的秒殺類、分享類、團購類等熱度高、并發量大的營銷活動對電子商務后臺支撐系統的緩存集群也帶來了極大壓力,緩存集群往往因為運營人員缺乏有效的監控和管理,在用戶流量高峰下容易出現宕機,從而導致整個支撐系統全面癱瘓。
二、Redis分布式緩存與管理技術
Redis是一個開源的使用ANSIC語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,其提供多種語言的API,因為其出眾的性能在眾多的移動互聯網企業后臺支撐系統中被應用于構建系統的緩存模塊。
(一)Redis分布式緩存
Redis 集群是一個分布式、容錯的 Redis 實現,Redis 集群中不存在中心節點或者代理節點,集群的主要設計目標是達到線性可擴展性,下面是Redis緩存集群的幾種配置方式。
1.主從模式(master/slaver)
主從模式的一個作用是備份數據,當一個緩存節點損壞(指不可恢復的硬件損壞)時,數據因為有備份,可以方便恢復。另一個作用是負載均衡,查詢操作就可以通過查詢從節點來完成。主從模式的缺點是master節點宕機以后,剩下的slave不能成為master,Redis緩存就不能對外提供寫服務了。
2.哨兵模式(Sentinel)
在主從模式中,當master節點宕機以后,slave節點不能主動選舉一個master節點出來,Sentinel模式就安排一個或多個哨兵(sentinel)來監控此類情況,當哨兵發現master節點宕機后就會從slave中重新選舉一個master。Sentinel模式基本可以滿足一般生產的需求,具備高可用性。但是當數據量過大到一臺服務器存放不下的情況時,Sentinel模式就不能滿足需求了。
3.集束模式(Cluster)
Cluster模式的出現是為了解決單機Redis緩存容量有限的問題,將Redis的數據根據一定的規則分配到多臺機器。Cluster模式是Sentinel模式和主從模式的組合方案,通過Cluster可以實現主從和master重選功能,因為Redis的數據是根據一定規則分配到不同機器的,當數據量過大時可以新增機器進行擴容,所以Cluster模式適合數據量巨大的場景。
(二)基于Redis的分布式緩存管理技術(CacheManager)
本文研究的Redis分布式緩存管理技術CacheManager實現了從各個緩存節點申請接入到最終部署上線以及整個緩存集群監控、自動彈性擴容的全方位功能。
CacheManager主要可分為緩存管理模塊與緩存監控模塊兩大部分:
1.分布式緩存管理
分布式緩存管理技術支持對Redis緩存集群Sentinel和Cluster模式的管理。
(1)自動接入部署
如果新的緩存服務器需納入CacheManager的管理范圍,運維人員可通過CacheManager的管理界面操作向管理服務發送緩存申請,申請內容包含需節點部署的緩存服務器地址、緩存內存大小、集群模式等信息。管理服務會與申請服務器進行通信并收集相關資源信息,如果符合管理規范,則自動對緩存服務器進行部署并納入管理范圍。
(2)統一配置管理
運維管理人員可以通過CacheManager的管理界面對緩存集群進行統一的配置管理,比如運維人員可通過界面化的操作對集群中的緩存應用實例進行結構調整,對集群中的實例和節點的動態上下線處理、數據遷移、節點調整等操作。
(3)彈性自動擴容
CacheManager支持運維人員提前根據系統的資源配置(集群的機器數量、硬件配置條件、Redis集群類型等)結合并發需求制定緩存集群的擴容策略。擴容策略在CacheManager被設置好后即自動生效,一旦緩存集群出現資源不足的情況,將根據設定策略自動彈性擴容。運維人員也可以實時介入,調整擴容策略并且一鍵設置生效。
CacheManager針對Redis緩存集群的擴容策略主要有垂直伸縮擴容與水平伸縮擴容兩種。
● 垂直伸縮擴容策略
此類策擴容略的實現原理是通過調整每個Redis緩存實例的可用內存量做到垂直拓展。這種策略優點是適用于所有類型的Redis集群,缺點是受限于Redis緩存所在服務器的物理內存資源大小。
● 水平伸縮擴容策略
CacheManager僅支持Sentinel和Cluster兩種Redis緩存集群的水平伸縮擴容策略。
針對Sentinel類型的緩存集群,當服務器物理內存不夠用或者運維人員在切換故障機器時,CacheManager通過進行在線切換主從關系和實例所屬機器實現擴容。
針對Cluster類型的緩存集群,CacheManager平臺通過進行動態加減緩存實例并在線遷移數據來實現伸縮擴容。此擴容方案的伸縮性最靈活,但是因為數據遷移需要重新分區,并導入到目標節點中,計算耗時比較長,擴容的速度最慢。
2.分布式緩存監控
CacheManager的緩存集群監控模塊按照監控對象的不同可以分成四部分:
(1)緩存服務器監控
緩存服務器的監控是指定時統計各個緩存服務器的性能狀況,主要監測指標是緩存服務器的內存使用率,CPU使用率,網絡流量消耗消耗情況,服務器系統的負載情況等,監控目的是確保緩存集群中的服務器本身運行良好。
(2)緩存實例監控
緩存應用拓撲監控是指以緩存集群中的各個緩存實例為監測對象,實時查看各個緩存實例的運行狀態,監測范圍包含緩存實例運行的情況,內存使用情況,當前對象數,當前連接數,緩存的命中率,角色關系等命中率,慢查詢數,慢查詢的詳細信息等。
(3)緩存命令監控
緩存命令監控是指監測集群中的各個單個緩存實例,統計各實例中各個命令的分布情況、執行情況、以及命令執行趨勢等信息。
(4)監控預警
對以上三個監控模塊監測到的信息進行閾值告警,達到預警值采用短信等方式通知系統運維人員。告警閾值可實時進行設置,告警的信息點可以進行動態添加。
三、總結
針對Redis分布式緩存的管理技術CacheManager具備自動接入部署、彈性伸縮擴容與全面監控管理等各項功能,大幅提升了運維人員的系統維護效率,有力加強了緩存集群與整個支撐系統的可用性與穩定性。
參考文獻
[1]王劍冰. 一種高并發分布式緩存服務架構[J]. 科學技術創新,2016(31):172-172.
[2]邱祝文. 基于redis的分布式緩存系統架構研究[J]. 網絡安全技術與應用,2014(10).
[3]周智. Redis分布式緩存實現與解析[J]. 信息通信,2018,No.186(06):29-30.
[4]戚偉強. 分布式緩存模式研究及其在金融系統中的應用[D]. 浙江大學,2008.
[5]孫赫. 大規模協同計算平臺下緩存層的研究與優化[D]. 西安電子科技大學,2015.
[6]徐朝輝,張蘭英,劉現民. 分布式緩存系統[J]. 計算機系統應用.
(作者單位:中國移動通信集團江蘇有限公司)