Redis Enterprise新版優化線性擴展,性能測試有點厲害!

在Redis Enterprise 5.0版本中,其團隊引入了對開源(OSS)集群API的支持,允許Redis Enterprise集群通過添加分片和節點以線性方式進行擴展。本文給出了第一個線性擴展基準測試,並展示了這種無限的線性擴展能力。

線性擴展是什麼?

根據維基百科的介紹,可擴展的數據庫是一個可以通過添加新的處理器和存儲來升級處理更多事務的數據庫,並且可以在不影響使用的情況下輕鬆升級。數據庫可以向外擴展(通過向集群添加節點,重新平衡並分配數據庫)或向上擴展(通過向數據庫添加分片而無需向集群添加節點)。Redis Enterprise經過優化,只需將其綁定到磁盤即可擴展。

線性擴展意味著通過添加與吞吐量相關的資源(在Redis術語中,“資源”指的是節點和分片)來順序擴展數據庫。真正的線性可擴展意味著資源量以與數據庫吞吐量以相同的比例增加,並且以確定的方式增加。例如,將集群資源增加50%將導致吞吐量增加50%。

如果數據庫可以線性擴展,則可以最大限度地降低運營開銷並可擴展業務,而無需擔心數據庫中的大小限制或性能瓶頸。但是,通常會出現與擴展相關的開銷,這意味著當容量增加N時,數據庫吞吐量通常會增加一個比N少(或少得多)的數字。

數據庫提供:

  • 亞線性擴展——當相對容量小於資源數量時。
  • 線性擴展——當相對容量等於添加資源的相對數量時。
  • 超線性擴展——當相對容量因增加資源而增加時。

Redis Enterprise的簡要介紹

Redis Enterprise術語中的集群是一組雲實例,虛擬機/容器節點或裸機服務器,允許創建任意數量的Redis數據庫(Redis Enterprise術語中的數據庫是跨多個Redis分片/實例管理整個數據集的實體,不要將此與每個Redis實例中的數據庫混淆,你可以使用Redis SELECT命令在鍵空間中進行分段)在整個集合共享的內存池中。集群具有對稱的無共享架構,數據路徑與控制和管理路徑之間完全分離,它包括以下主要組件:

  • Redis Shards-具有主或從的Redis實例
  • Zero-latency Proxy- 構建在多線程、無狀態架構之上,負責隱藏集群的複雜性,增強安全性(SSL,身份驗證,DDoS保護)並提高性能(無TCP連接管理)
  • Cluster Manager(控制和管理路徑) - 由集群節點上的一組分佈式進程構建,負責集群配置、響應請求、資源管理等工作,以及充當資源監視器並完全使Redis分片管理集群中其他分片的運行狀況或執行故障轉移。

可以在以下任何一種配置中創建Redis Enterprise集群中的數據庫:


Redis Enterprise新版優化線性擴展,性能測試有點厲害!

構建測試環境

綜合各方面因素,其團隊決定在AWS上構建測試環境,以驗證Redis Enterprise是否能夠以線性方式實現無限擴展。最終測試使用的是EC2 m4.16xlarge實例(64核,256GB RAM)用於集群節點和c4.8xlarge實例(36核,60GB RAM)用於運行memtier_benchmark,一個開源多線程負載生成工具。

使用多個memtier_benchmark實例是必須的,因為在許多情況下,單Redis Enterprise節點可以處理比單memtier_benchmark實例更多的流量,這種方法可避免單個NIC網絡帶寬和數據每秒傳輸限制,並且可以逐步(逐個實例)增加流量負載。

這是其團隊的最終設置:

Redis Enterprise集群節點的6x m4.16xlarge實例:


Redis Enterprise新版優化線性擴展,性能測試有點厲害!

運行memtier_benchmark的8x c4.8xlarge實例:


Redis Enterprise新版優化線性擴展,性能測試有點厲害!

在過去幾個月,其團隊進行了多次測試,其中包括k節點Redis Enterprise集群其他基準測試n-shard數據庫,如下所示:


Redis Enterprise新版優化線性擴展,性能測試有點厲害!


表1:Redis Enterprise線性擴展,同時提供亞毫秒級性能。

圖1:集群吞吐量(@ 1毫秒延遲)

這表明隨著吞吐量的增加,其節點的線性擴展能力增加,Redis Enterprise能夠在所有數據大小和工作負載上始終如一地提供亞毫秒級延遲。

創建和調整集群數據庫

其團隊使用Redis Enterprise API創建了一個192-shard集群Redis數據庫,其中包含以下參數:

Redis Enterprise新版優化線性擴展,性能測試有點厲害!

我們通過將proxy 線程數設置為24來調整每個節點上的proxy以應對預期的負載:

Redis Enterprise新版優化線性擴展,性能測試有點厲害!

當然,其他數據庫供應商也發佈了許多關於其擴展能力的基準測試數據。實際上,結果表明Redis Enterprise的表現優於NoSQL同行。以下圖表是其他NoSQL供應商的基準測試結果,該圖表比較了Apache Cassandra,HBase,MongoDB和Couchbase。

Redis Enterprise新版優化線性擴展,性能測試有點厲害!



Redis Enterprise新版優化線性擴展,性能測試有點厲害!


Redis Enterprise新版優化線性擴展,性能測試有點厲害!


Redis Enterprise新版優化線性擴展,性能測試有點厲害!


Redis Enterprise新版優化線性擴展,性能測試有點厲害!



從圖表中可以看出,所有供應商都提供了亞線性擴展能力。例如,如果按節點分析Cassandra的吞吐量,Cassandra的1個節點可處理大約18,700 ops /秒,以此類推,32個節點時應該能夠處理大約600,000 ops /秒。但實際上,它只能處理大約330,000ops /秒,只具備真正線性擴展數據庫55%的能力。

憑藉其最新的基準測試,Redis Enterprise已證明其每秒能夠處理數百萬次操作,即使在最基本的配置情況下也是如此。如下圖所示,Redis Enterprise的性能優於其他數據庫,可提供超線性擴展而不會影響性能!


Redis Enterprise新版優化線性擴展,性能測試有點厲害!


表3:Redis Enterprise ——節點的最佳與實際吞吐量

Redis Enterprise新版優化線性擴展,性能測試有點厲害!


這一新的基準測試證明了Redis Enterprises能夠實現真正的線性可擴展性,同時通過有效的資源利用提供強大的性能,但是,基準測試中並未提到其他參與數據庫的版本是企業版還是開源版,因此數據還有待考量。


分享到:


相關文章: