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