來源:互聯網
上載者:User
關鍵字
雲計算
資料中心
資料中心
RedisCloud
【編者按】日前,來自Aerospike公司的Anshu和Rajkumar在High Scalability網站上發表文章宣稱其能 以1.68美元/小時的成本獲取百萬TPS,受此影響,Redis Labs的Itamar Haber 利用非基準測試程式,在作者看來基準測試程式往往是一個陷阱,那麼Redis的測試結果到底如何呢?
以下為原文:
前不久有一天,我看到 來自Aerospike公司的Anshu和Rajkumar寫的文章。 非常喜歡這篇文章,給我印象特別深刻的是他們對EC2實例的重度調整繼而突破100萬大關,但我一直在想——Redis怎麼做?
我本來可以做一個成熟的基準測試程式,但一個成熟的基準測試程式既耗時又耗資源。 而且這還不考慮開始的意想不到的困難。 真正的基準測試無疑是個圈套,它只是積累在特定優化和步驟上的作秀而已。 但是我想要一個答案,我想要更快,所以我願意做出一些犧牲。 這就是近乎完美的——非基準測試程式。
我自己給非基準測試程式下的定義就是一點也不像基準測試程式(因此得名)。 在這裡,你可以輕裝上陣。 依託我們實驗室同事們的專業知識,我們在沒有進一步優化的前提下測量了Redis Cloud軟體的性能。 我們使用以下設置運行我們的非基準測試程式:
單分片RedisCloud記憶體NoSQL資料庫伺服器運行在一個Amazon實例上。 300萬物件,每個物件大小在100位元組。 運行在非伺服器端實例上memtier_benchmark工具用戶端,使用下面的命令列參數: `--ratio=1:1 -n 1000000 -d 100 -t 1 -c 50 --pipeline=75 --key-pattern=S:S`. 按相同比例混合讀寫工作負載(我們沒有特別偏向其中一種操作類型,感覺這種混合更好地反映現實)。 一個按需c3.8xlarge實例。
我們沒有時間去建立一個VPC以及調整Placement Groups到最佳性能,因此我們在自己的標準服務環境運行所有東西——即在嘈雜、擁擠的EC2網路。 當然,我們也沒有為這個試驗調整CPU行為或執行緒數量以及分片的配置,只讓Redis Cloud使用其預設值。 我們沒有測試多重網路設定或添加額外的彈性網路介面(ENI),只是簡單的在HVM 上提供全新的預分配Redis Cloud 伺服器以及為它做了非基準測試程式......
在這個要點上,你可以從我們的運行上獲得原始輸出,但結果是略高於120萬TPS(確切地說是1228432)。 當然,這令人驚異的結果著實刺激到我,我立即要求一個成熟的、包括全面的優化的、徹底的、面面俱到的基準測試程式來真正測試Redis可以達到的極限,你猜怎麼著?
分片和Redis Cloud 集群
通過設計,Redis伺服器(大部分)是一個單線程的進程。 既然如此,分片通常用來部署超過單核或獨立伺服器RAM性能的Redis資料庫。 這裡有被普遍接受的三種方法實現分片:用戶端、代理或集群。 因為針對分片Redis的用戶端和基於代理解決方案,相對容易獨立于實際的底層資料庫引擎實現,這些(如Redis-rb和nutcracker)已經深入人心。 然而,如今只有很少Redis集群解決方案。
一個分片Redis集群意味著Redis伺服器(流程)要部署在網路中一個或多個計算節點。 集群運行Redis資料庫,每個可能跨許多節點和多核,超過RAM總數。 一個產品級別的集群不僅要確保資料庫的性能和基礎設施的管理以及資料庫資源,也要確保其可用性。
最著名的Redis集群實現當然應該是開源的,當然,Redis cluster(v3)已經進入Beta版後期,並且預計將在數月內正式公佈。 這個即將推出的版本將為當下諸多的挑戰提供優秀的答案。 在其許多新特性中,新OSS版本還包括能夠創建分片集群。 就整個Redis社區來講(如果冒犯某些人,抱歉),我們認為Redis版本3在各個方面都是一個重要的版本。
除了開源v3,還有其他一些Redis集群。 有些人走在前面並且構建了自己的集群,每個人都有自己的原因。 我不想借任何人抬高自己(像Twitter、Weibo或Pinterest),但有一家公司,已經建立了一個集群,那就是Redis Labs。 我們Redis Cloud服務是由自己實現的Redis 集群提供技術支援的,並且過去兩年中,已經在自己的大部分產品種使用。 在此期間,我們一直在跨多重雲和資料欄上構建和運營我們的集群。
Redis Labs是Redis專案的開源貢獻者——我們的大部分員工都很棒並且和公司同呼吸共命運——但我們使用者需要的解決方案並不是都在開源的範圍。 為了滿足這些業務挑戰,我們開發的解決方案允許我們在系統運行時擴展Redis資料庫從MB到TB。 我們在四個不同的IaaS供應商和 20資料中心上部署、擴展和管理集群。 使用者們構建了數以萬計的資料庫,我們不僅要維護每個資料庫的可用性和性能,同時也要兼顧運營和管理工作。
下面是關於Redis Labs集群鮮為人知的事實:你無需在你應用程式中做任何改變就可以開始使用它們。 是的,你可以使用現有的代碼和用戶端庫,並且仍然會獲得集群提供的所有可擴充性、可用性以及運營方面的好處。 使用者只需要創建資料庫和配置選項(可用性、資料持久性、分片、安全等諸如此類),他們只需要在Redis Cluster中使用單一Redis URL(主機名稱和埠)。 當然,在這上面你可以做諸如調整、最佳實踐、優化等,但(正如在非基準測試程式所示),即使沒有它們,我們的集群也是一個了不起的執行者。
原文連結: The 1.2M Ops/Sec Redis Cloud Cluster Single Server Unbenchmark (編譯/魏偉 審校/仲浩)
免費訂閱「CSDN雲計算(左)和CSDN大資料(右)」微信公眾號,即時掌握第一手雲中消息,瞭解最新的大資料進展!
CSDN發佈虛擬化、Docker、OpenStack、CloudStack、資料中心等相關雲計算資訊, 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、 記憶體計算、流計算、機器學習和智慧演算法等相關大資料觀點,提供雲計算和大資料技術、平臺、實踐和產業資訊等服務。