十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
在redis Enterprise 5.0版本中,其團隊引入了對開源(OSS)集群API的支持,允許Redis Enterprise集群通過添加分片和節(jié)點以線性方式進行擴展。本文給出了第一個線性擴展基準測試,并展示了這種無限的線性擴展能力。
公司主營業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出吳橋免費做網(wǎng)站回饋大家。
線性擴展是什么?
根據(jù)維基百科的介紹,可擴展的數(shù)據(jù)庫是一個可以通過添加新的處理器和存儲來升級處理更多事務(wù)的數(shù)據(jù)庫,并且可以在不影響使用的情況下輕松升級。數(shù)據(jù)庫可以向外擴展(通過向集群添加節(jié)點,重新平衡并分配數(shù)據(jù)庫)或向上擴展(通過向數(shù)據(jù)庫添加分片而無需向集群添加節(jié)點)。Redis Enterprise經(jīng)過優(yōu)化,只需將其綁定到磁盤即可擴展。
線性擴展意味著通過添加與吞吐量相關(guān)的資源(在Redis術(shù)語中,“資源”指的是節(jié)點和分片)來順序擴展數(shù)據(jù)庫。真正的線性可擴展意味著資源量以與數(shù)據(jù)庫吞吐量以相同的比例增加,并且以確定的方式增加。例如,將集群資源增加50%將導(dǎo)致吞吐量增加50%。
如果數(shù)據(jù)庫可以線性擴展,則可以最大限度地降低運營開銷并可擴展業(yè)務(wù),而無需擔(dān)心數(shù)據(jù)庫中的大小限制或性能瓶頸。但是,通常會出現(xiàn)與擴展相關(guān)的開銷,這意味著當(dāng)容量增加N時,數(shù)據(jù)庫吞吐量通常會增加一個比N少(或少得多)的數(shù)字。
數(shù)據(jù)庫提供:
亞線性擴展——當(dāng)相對容量小于資源數(shù)量時。
線性擴展——當(dāng)相對容量等于添加資源的相對數(shù)量時。
超線性擴展——當(dāng)相對容量因增加資源而增加時。
Redis Enterprise的簡要介紹
Redis Enterprise術(shù)語中的集群是一組云實例,虛擬機/容器節(jié)點或裸機服務(wù)器,允許創(chuàng)建任意數(shù)量的Redis數(shù)據(jù)庫(Redis Enterprise術(shù)語中的數(shù)據(jù)庫是跨多個Redis分片/實例管理整個數(shù)據(jù)集的實體,不要將此與每個Redis實例中的數(shù)據(jù)庫混淆,你可以使用Redis SELECT命令在鍵空間中進行分段)在整個集合共享的內(nèi)存池中。集群具有對稱的無共享架構(gòu),數(shù)據(jù)路徑與控制和管理路徑之間完全分離,它包括以下主要組件:
Redis Shards-具有主或從的Redis實例
Zero-latency Proxy- 構(gòu)建在多線程、無狀態(tài)架構(gòu)之上,負責(zé)隱藏集群的復(fù)雜性,增強安全性(SSL,身份驗證,DDoS保護)并提高性能(無TCP連接管理)
Cluster Manager(控制和管理路徑) - 由集群節(jié)點上的一組分布式進程構(gòu)建,負責(zé)集群配置、響應(yīng)請求、資源管理等工作,以及充當(dāng)資源監(jiān)視器并完全使Redis分片管理集群中其他分片的運行狀況或執(zhí)行故障轉(zhuǎn)移。
可以在以下任何一種配置中創(chuàng)建Redis Enterprise集群中的數(shù)據(jù)庫:
構(gòu)建測試環(huán)境
綜合各方面因素,其團隊決定在AWS上構(gòu)建測試環(huán)境,以驗證Redis Enterprise是否能夠以線性方式實現(xiàn)無限擴展。最終測試使用的是EC2 m4.16xlarge實例(64核,256GB RAM)用于集群節(jié)點和c4.8xlarge實例(36核,60GB RAM)用于運行memtier_benchmark,一個開源多線程負載生成工具。
使用多個memtier_benchmark實例是必須的,因為在許多情況下,單Redis Enterprise節(jié)點可以處理比單memtier_benchmark實例更多的流量,這種方法可避免單個NIC網(wǎng)絡(luò)帶寬和數(shù)據(jù)每秒傳輸限制,并且可以逐步(逐個實例)增加流量負載。
這是其團隊的最終設(shè)置:
Redis Enterprise集群節(jié)點的6x m4.16xlarge實例:
運行memtier_benchmark的8x c4.8xlarge實例:
在過去幾個月,其團隊進行了多次測試,其中包括k節(jié)點Redis Enterprise集群其他基準測試n-shard數(shù)據(jù)庫,如下所示:
表1:Redis Enterprise線性擴展,同時提供亞毫秒級性能。
圖1:集群吞吐量(@ 1毫秒延遲)
這表明隨著吞吐量的增加,其節(jié)點的線性擴展能力增加,Redis Enterprise能夠在所有數(shù)據(jù)大小和工作負載上始終如一地提供亞毫秒級延遲。
創(chuàng)建和調(diào)整集群數(shù)據(jù)庫
其團隊使用Redis Enterprise API創(chuàng)建了一個192-shard集群Redis數(shù)據(jù)庫,其中包含以下參數(shù):
我們通過將proxy 線程數(shù)設(shè)置為24來調(diào)整每個節(jié)點上的proxy以應(yīng)對預(yù)期的負載:
當(dāng)然,其他數(shù)據(jù)庫供應(yīng)商也發(fā)布了許多關(guān)于其擴展能力的基準測試數(shù)據(jù)。實際上,結(jié)果表明Redis Enterprise的表現(xiàn)優(yōu)于NOSQL同行。以下圖表是其他NoSQL供應(yīng)商的基準測試結(jié)果,該圖表比較了Apache Cassandra,HBase,MongoDB和Couchbase。
從圖表中可以看出,所有供應(yīng)商都提供了亞線性擴展能力。例如,如果按節(jié)點分析Cassandra的吞吐量,Cassandra的1個節(jié)點可處理大約18,700 ops /秒,以此類推,32個節(jié)點時應(yīng)該能夠處理大約600,000 ops /秒。但實際上,它只能處理大約330,000ops /秒,只具備真正線性擴展數(shù)據(jù)庫55%的能力。
憑借其最新的基準測試,Redis Enterprise已證明其每秒能夠處理數(shù)百萬次操作,即使在最基本的配置情況下也是如此。如下圖所示,Redis Enterprise的性能優(yōu)于其他數(shù)據(jù)庫,可提供超線性擴展而不會影響性能!
表3:Redis Enterprise ——節(jié)點的最佳與實際吞吐量
這一新的基準測試證明了Redis Enterprises能夠?qū)崿F(xiàn)真正的線性可擴展性,同時通過有效的資源利用提供強大的性能,但是,基準測試中并未提到其他參與數(shù)據(jù)庫的版本是企業(yè)版還是開源版,因此數(shù)據(jù)還有待考量。