隨著技術(shù)的發(fā)展,緩存技術(shù)的大規(guī)模使用是現(xiàn)代互聯(lián)網(wǎng)架構(gòu)區(qū)別于傳統(tǒng)IT技術(shù)最大的地方。通過合理利用緩存技術(shù)與緩存數(shù)據(jù)庫,可以幫助企業(yè)有效提升系統(tǒng)的性能、可用性與擴(kuò)展性,助力企業(yè)提供更加敏捷創(chuàng)新與穩(wěn)定安全的服務(wù)。
事實(shí)上,緩存技術(shù)與緩存數(shù)據(jù)庫的應(yīng)用無所不在,與我們的生活息息相關(guān)。從金融、醫(yī)療到互聯(lián)網(wǎng)業(yè)務(wù),小到我們?nèi)粘I钪薪?jīng)常使用的各種購物網(wǎng)站、訂餐系統(tǒng)、購票系統(tǒng)、視頻/直播類app、行程碼/健康碼系統(tǒng)等等,可以說都與緩存技術(shù)密切相關(guān)。然而,企業(yè)在應(yīng)用緩存技術(shù)與緩存數(shù)據(jù)庫的過程中,通常會以傳統(tǒng)x86服務(wù)器集群為底座,卻常會面臨以下三大挑戰(zhàn):
1 隨著緩存技術(shù)與緩存數(shù)據(jù)庫的廣泛應(yīng)用,集群中x86服務(wù)器的內(nèi)存和其他硬件故障概率也在增加
2 服務(wù)器內(nèi)存損壞故障發(fā)生時,恢復(fù)流程復(fù)雜,恢復(fù)時間冗長
3 隨著x86服務(wù)器數(shù)量不斷增長,架構(gòu)越來越復(fù)雜,管理難度不斷增加
那么,在傳統(tǒng)的x86服務(wù)器集群架構(gòu)之外,是否有其他更好的平臺架構(gòu)可以解決上述的三大挑戰(zhàn)呢?答案是肯定的。實(shí)際上,越來越多的客戶已經(jīng)開始通過具備更高整合效率、更高主頻、更大緩存、以及更佳內(nèi)存可靠性的底層架構(gòu)來支撐緩存數(shù)據(jù)庫,打造高性能、高可用、易管理的緩存數(shù)據(jù)庫底座,讓業(yè)務(wù)插上黑科技的翅膀,騰飛翱翔。
主流的緩存數(shù)據(jù)庫有哪些?
緩存是一種通用的設(shè)計模式:這種模式一般利用增加存儲空間的方式,實(shí)現(xiàn)低速部件與高速部件之間的解耦。也就是說,實(shí)現(xiàn)了解耦的地方就有存在緩存的可能,既然解耦是計算機(jī)系統(tǒng)架構(gòu)設(shè)計中最常用的手段,那么緩存就必將在IT系統(tǒng)和架構(gòu)中無處不在,如CPU內(nèi)部緩存,客戶端瀏覽器緩存,Web服務(wù)器緩存,應(yīng)用程序緩存,數(shù)據(jù)庫緩存等。
在各種普遍使用的緩存技術(shù)中,基于內(nèi)存數(shù)據(jù)庫的NoSQL分布式緩存技術(shù)在目前的緩存數(shù)據(jù)庫領(lǐng)域得到了廣泛的應(yīng)用。其中最為典型的就是Memcached和Redis這兩種高性能分布式內(nèi)存緩存數(shù)據(jù)庫,一般用來緩存訪問的熱點(diǎn)數(shù)據(jù),減輕物理數(shù)據(jù)庫壓力和負(fù)載。
Memcached是一個開源、高性能、將數(shù)據(jù)分布于內(nèi)存中并使用key-value存儲結(jié)構(gòu)的緩存系統(tǒng)。它通過在內(nèi)存中緩存數(shù)據(jù)來減少向數(shù)據(jù)庫的頻繁訪問連接的次數(shù),可以提高動態(tài)、數(shù)據(jù)庫驅(qū)動之類網(wǎng)站的運(yùn)行速度。
Memcached基于內(nèi)存的key-value存儲,用來存儲小塊的任意數(shù)據(jù)(字符串、對象)。這些數(shù)據(jù)可以是數(shù)據(jù)庫調(diào)用、API調(diào)用或者是頁面渲染的結(jié)果。一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。
和Memcached不同的是,Redis支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
在此基礎(chǔ)上,Redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是Redis會周期性的使用RDB快照的方式,把更新的數(shù)據(jù)寫入磁盤或者使用類似MySQL的AOF日志方式把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。Redis支持將數(shù)據(jù)同步到多臺從數(shù)據(jù)庫上,這種特性對提高讀取性能非常有益。
實(shí)際案例:
緩存數(shù)據(jù)庫底層架構(gòu)深度剖析
通常情況下,客戶大部分的分布式緩存系統(tǒng)都基于x86服務(wù)器打造,也取得了性能等方面的明顯改進(jìn),但同時也存在一些問題,比如x86節(jié)點(diǎn)的穩(wěn)定性問題,網(wǎng)絡(luò)傳輸時延導(dǎo)致的數(shù)據(jù)一致性問題,x86節(jié)點(diǎn)過多導(dǎo)致的管理問題等。
不管是Memcached還是Redis,都需要一個性能更高,更穩(wěn)定的硬件平臺來支撐。通過對LinuxONE平臺的特性研究可以發(fā)現(xiàn),在特定場景下,LinuxONE平臺特有的高主頻,高密度和高可靠性可以解決很多在x86架構(gòu)上構(gòu)建分布式緩存集群過程中遇到的這些問題。
以某客戶的Memcached集群方案為例,客戶在x86平臺上的某應(yīng)用解決方案如下圖所示:
其中,4套Memcached,每套10臺機(jī)器10T內(nèi)存,定期做Dump(大約8T),用于恢復(fù)。
客戶遇到的問題如下:
1 約10T的緩存數(shù)據(jù)庫,x86服務(wù)器集群平均每月會出現(xiàn)內(nèi)存故障一次
2 恢復(fù)流程麻煩:如果單臺服務(wù)器內(nèi)存損壞故障,同中心3.5小時恢復(fù),他中心5小時恢復(fù)
3 整個硬件環(huán)境復(fù)雜,管理復(fù)雜度高
對應(yīng)地,IBM LinuxONE部署方案如下圖所示:
每臺LinuxONE的部署方式如下:
通過對比測試發(fā)現(xiàn),在實(shí)現(xiàn)同樣性能的前提下,LinuxONE平臺具備如下優(yōu)勢:
1 整合效率:一臺LinuxONE整合一個數(shù)據(jù)中心的關(guān)鍵x86服務(wù)器和高端Unix服務(wù)器,使用兩臺即可實(shí)現(xiàn)原先需要幾十臺x86+高端Unix服務(wù)器的集群搭建,極大地降低了系統(tǒng)復(fù)雜度及維護(hù)難度
2 高性能:LinuxONE的高主頻(5.2GHz)大緩存(超過11GB)可確保單個節(jié)點(diǎn)的高處理能力和性能
3 LinuxONE平臺內(nèi)存特有的RAIM高可用技術(shù)可以避免內(nèi)存故障導(dǎo)致的內(nèi)存庫恢復(fù),極大地提升系統(tǒng)可用性
4 LinuxONE獨(dú)有的內(nèi)存通訊技術(shù)可以大幅度提升網(wǎng)絡(luò)帶寬,降低通訊時延,提升集群數(shù)據(jù)一致性
5 LinuxONE平臺高達(dá)99.9999%的可用性可以確保系統(tǒng)可用性,同時降低維護(hù)復(fù)雜度
注:LinuxONE內(nèi)存高可用技術(shù)RAIM全稱為Redundant Array of Independent Memory,與RAID冗余磁盤陣列設(shè)計原理相同,每個CPU芯片上的內(nèi)存控制器(MCU)控制5根內(nèi)存DIMM,其中1根作為校驗(yàn)數(shù)據(jù),可避免單一內(nèi)存條發(fā)生故障導(dǎo)致整個系統(tǒng)無法運(yùn)作。
RAIM內(nèi)存高可用技術(shù)示意圖
不僅是Memcached,LinuxONE平臺在Redis這樣的緩存數(shù)據(jù)庫的應(yīng)用場景中同樣具備這些優(yōu)勢。可以說LinuxONE和緩存數(shù)據(jù)庫的結(jié)合,是緩存數(shù)據(jù)庫追求最高可用性和一致性的黃金組合。其“以一敵百”的數(shù)據(jù)中心整合效率和眾多黑科技帶來的優(yōu)勢,讓LinuxONE成為緩存數(shù)據(jù)庫的最佳底座,幫助企業(yè)提供更加敏捷創(chuàng)新與穩(wěn)定安全的高性能服務(wù)。
LinuxONE黑科技詳解
LinuxONE是IBM推出的以傳統(tǒng)“零宕機(jī)”硬件為基礎(chǔ)的企業(yè)級開放Linux服務(wù)器。在硬件層面,提供了非常強(qiáng)大的底層支撐平臺,從而在“相同的簡單易用”基礎(chǔ)之上,可以帶給客戶“與眾不同的能力和體驗(yàn)”。
LinuxONE的強(qiáng)大能力,可以用“3高6黑”簡單概括,3高是指LinuxONE超越任何其它平臺的3種超高能力,即“高性能、高可靠和高密度”。
高性能是因?yàn)長inuxONE配置了所有商用服務(wù)器里最高的5.2GHz主頻的處理器以及總量超過11GB的4級大緩存,再加上高達(dá)192個的IO插槽從而為客戶提供最為強(qiáng)大的計算和IO處理的能力。
在高可靠方面,LinuxONE提供了N+1的全冗余體系架構(gòu),這里面涵蓋了CPU,內(nèi)存,IO、電源、風(fēng)扇、控制臺等等,從而使得LinuxONE單機(jī)就可達(dá)到6個9的可靠性。而內(nèi)存數(shù)據(jù)庫對于內(nèi)存的可靠性要求尤為重要,LinuxONE作為業(yè)內(nèi)唯一實(shí)現(xiàn)內(nèi)存全冗余架構(gòu)的硬件平臺,通過RAIM技術(shù)實(shí)現(xiàn)了內(nèi)存芯片及內(nèi)存條間的雙重高可用,從而保證無論是內(nèi)存芯片故障或者內(nèi)存條故障,均不會影響內(nèi)存數(shù)據(jù)庫的穩(wěn)定運(yùn)行。
在高密度方面,LinuxONE除了具備強(qiáng)大的縱向擴(kuò)展能力,橫向方面單機(jī)可支持85個邏輯分區(qū),超過8000個的虛機(jī),以及2百萬個容器,從而可以用以一頂百的方式實(shí)現(xiàn)高密度的集約化部署。
而“3高6黑”里的6黑是指LinuxONE所配備的6種黑科技,這更多的是針對企業(yè)級計算里面涉及到的很多非常集中的需求,比如數(shù)據(jù)的壓縮排序和加解密的需求,以及虛擬化環(huán)境各種應(yīng)用負(fù)載或虛擬服務(wù)器之間的通訊,隔離,時鐘同步的需求。
LinuxONE在硬件層面做了很多針對性的優(yōu)化,從而使得這些高頻需求的處理效率或者安全性可以得到大幅的提升。比如LinuxONE的芯片壓縮支持高達(dá)260GB/s的超大規(guī)模吞吐能力,可以幫助客戶節(jié)省大量存儲空間,節(jié)省網(wǎng)絡(luò)帶寬,縮短數(shù)據(jù)傳輸時間等等。
時鐘同步方面,我們可以確保同一設(shè)備內(nèi)的所有分區(qū)和虛機(jī)的精準(zhǔn)同步,以及在跨多臺設(shè)備的集群同步方面達(dá)到微秒級的精度,這對于分布式內(nèi)存數(shù)據(jù)庫集群會有很大的作用,因?yàn)榉植际絻?nèi)存數(shù)據(jù)庫對于節(jié)點(diǎn)間的時間同步往往有著苛刻的要求。
LinuxONE的第六大黑科技是基于內(nèi)存的通信技術(shù)SMC-D/SMC-R。在分布式架構(gòu)中,節(jié)點(diǎn)和節(jié)點(diǎn)之間會有大量的數(shù)據(jù)交互,節(jié)點(diǎn)越多,負(fù)載越高,大量數(shù)據(jù)的交互帶來的網(wǎng)絡(luò)開銷、CPU開銷越明顯,甚至有可能還會影響網(wǎng)絡(luò)的可靠性和應(yīng)用的效率。LinuxONE基于內(nèi)存高速通信技術(shù)是基于(R)DMA標(biāo)準(zhǔn)協(xié)議,對應(yīng)用透明,提供更快的通信,與使用普通網(wǎng)卡相比,流工作負(fù)載的吞吐量提高20倍,CPU消耗減少85%以上,響應(yīng)時間縮短95%;交互式工作負(fù)載的吞吐量最多提高16倍,與網(wǎng)絡(luò)相關(guān)的CPU消耗最多降低40%,響應(yīng)時間最多縮短94%。
LinuxONE是業(yè)內(nèi)唯一全冗余智能容錯架構(gòu)服務(wù)器,單機(jī)就能實(shí)現(xiàn)硬件層面的全冗余,LinuxONE平均硬件無宕機(jī)時間超過40年,是業(yè)內(nèi)最穩(wěn)定的服務(wù)器,足以承載數(shù)據(jù)庫計算節(jié)點(diǎn)的可用性需求。LinuxONE具備商用服務(wù)器最高等級EAL5+的安全技術(shù)認(rèn)證,確保LPAR的隔離性和安全性。節(jié)點(diǎn)間通過SMC-D高速內(nèi)存虛擬網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交互,低延時,高吞吐,更穩(wěn)定。