您的位置:首頁>正文

企業打開Redis的正確方式,來自阿裡云云資料庫團隊的解讀

摘要: Redis是開源的基於記憶體且可以持久化的分散式 Key – Value資料庫。 自2009年發佈最初版本以來, Redis的熱度只增不減, 除了經常位居DB-Engines的最受歡迎Key-Value資料庫榜首之外, 看阿裡雲技術總監為您深度解讀雲資料庫Redis。

為何Redis成為資料庫能成為後起之秀?

資料庫技術積累近半個世紀, 然而隨著新時代場景增多、業務發展, 傳統資料庫面臨著很多壓力。 資料開始初現規模, 企業需要多套HA集群資料庫, SQL和NoSQL Key Value混合使用, 並且開始使用監控系統。 而更加複雜的情況下, 每個業務都需要各自特定的資料庫架構和優化方案, 需要加入OLAP 、離線分析任務,

並且考慮高速擴展、高性能、高可靠等問題。

Redis是開源的基於記憶體且可以持久化的分散式 Key – Value資料庫。 自2009年發佈最初版本以來, Redis的熱度只增不減, 除了經常位居DB-Engines的最受歡迎Key-Value資料庫榜首之外, 也在多家調查報告中成為非常受喜愛的NoSQL資料庫。

Redis作為NoSQL的代表之一, 為什麼會在歷史悠久的資料庫領域中迸發出此般活力?

阿裡云云資料庫技術總監蔡松露認為:相比與強一致性的SQL關係型數據庫, NoSQL非關係型數據庫具備高性能、高靈活性。 在當今的互聯網時代, 如新金融、新零售、視頻直播、人工智慧、IoT等多樣化的業務場景有了更嚴苛更不同的技術訴求。 其次, 擅長OLTP查詢的SQL並不完美地滿足猛增的OLAP分析需求。 最後, 資料庫行業一直信奉的CAP理論已經被Paxos、Raft等演算法打破,

即可以同時實現強一致、高可用和高容錯, 這也被視為NoSQL運動興起的重大原因之一。

“一切堅固的東西, 都煙消雲散了”。 Redis能讓資料庫運行在記憶體中, 比快閃記憶體盤快1000倍。

開源Redis有哪些不足?

其實, 開源專案和企業產品, 有著完全不同的定位。 開源Redis項目最大的原則是簡單可靠, 但是雲產品則需要滿足很多企業訴求如多地容災、安全加密、升級與優化、集群相容性等等。

阿裡云云資料庫團隊一直積極參與Redis開源社區的共建:在Redis 創始人 Salvatore之後, 對社區代碼貢獻第二的就是阿裡云云資料庫團隊;去年十月, 阿裡云云資料庫還將自研的特性如短連線性能提升30%、支持熱升級、相容Memcache等融合到ApsaraCache專案中並貢獻給開源社區,

對此Salvatore表示“ApsaraCache 專案開源是一件非常好的事情, 將能夠吸引全世界更多 Redis 核心專家參與, 進一步提升產品的穩定性和可用性。 ”

在每個企業級的需求背後, 團隊都做了巨大的研發工作。 舉例說明, 集群高相容性和無縫擴容以滿足實際生產需求;在集群熱升級時做到使用無感知且業務不受影響;提供安全加密功能滿足如金融對保密級別要求高的客戶等等。

工業級使用, 沒有什麼是小事兒

目前, 90%的中國互聯網公司都依靠Redis支撐用戶的高併發訪問, 而80%的中國視頻直播網站都使用的阿裡云云資料庫 Redis 版。

與開源Redis專案相比, 相容Redis協定標準的阿裡云云資料庫 Redis 版有哪些優勢?

Figure 1阿裡雲基於開源Redis的企業級需求技術支援

作為為企業服務的雲產品, 僅僅提供酷炫的功能並不足夠, 更需要的是可靠、性能、安全和易用方面的保障和承諾。 對於阿裡云云資料庫團隊而言, 很多改進都是在各種客戶場景需求下不斷打磨而成, 比如:雙機熱備、持久化、同城容災;支援集群版、高性能硬體、基於Binglog模式複製免除pfork;VPC網路、強式密碼認證、DDoS攻擊、SSL加密;性能監控、閾值報警、高頻操作、資料管理等。

容災是必不可少的部分, Redis原生的AOF可以説明同一機房網路相應可達情況下的容災, 但是對於鏈路過長跨城甚至存在跨時區機房時, 而需要遠端異地同步。 有些企業對可用性要求極高, 每個單元都須承擔流量, 允許N-1個機房斷電;為此, 團隊設計了服務單元化+資料中心的拓撲模式,

並相應地進行內核改造從而具備獨特的容災能力。

Figure 2:Redis異地多活架構方案示意圖

每個行業都會有各自場景需求。 以遊戲行業為例, 如鬥地主等房間模式需要做到隨時開服, 這就需要基於時間點使用者備份做到瞬間克隆實例;而對於參加人數會猛增的遊戲, 需要在瘋狂灌人時逐步增大配置以做到資源合理高效利用,比如從標準版一鍵升級到極致版需要秒級遷移使用者數並且做到服務不收影響;在遊戲低峰收尾業務時多服合併,即將多個服務資料庫匯總到一個再做即時降級。同時,還要雲上雲下資料打通,資料歸檔快速回滾,做到時間點或局部恢復。

而對於視頻直播行業,瞬間大量使用者湧入的場景非常需要快速存儲、快速回應,基於朋友關係的送禮物、討論評論等大部分數據操作都適合非關係型數據庫,而僅有充值等少量場景需要關係性資料庫,因此重度依賴Redis資料庫,相應地則有“穩定性高於一切、低記憶體高QPS、連接數較大”的技術要求。相應地,阿裡雲出臺的視頻直播方案具備連接數可普調至1-2w、頻寬可單獨調配及至萬兆, 集群支持熱點key,讀寫分離等

此外,民生類的行業又會分為極高QPS,熱升、無縫擴容的新聞類,容災、多活的交通類,容災、資料安全的金融類,根據各種場景給出回應的優化方案。

關於阿裡雲Redis 4.0雲資料庫增強版的一些細節

阿裡云云資料庫Redis版發佈的增強版具有多執行緒架構、記憶體壓縮演算法優化、key後臺刪除功能、Redis module、Redis熱key統計等特點,尤其值得一提的是該款產品通過創新的Redis module讓資料庫第一次有了“集裝箱貨輪”的能力。

Figure 3:Redis module讓資料庫擁有“集裝箱”能力

一般而言,傳統的單核CPU需要承擔30%計算和60%網路的工作負載,而當採用多核處理之後,可以將計算、網路任務分別交給若干個CPU並將性能提高三倍,從根本上解決問題從而高併發任務量。同時,還通過創新的記憶體壓縮演算法,將資料量壓縮50%。

熱key統計是為了解決熱點事件時大流量請求集中落在某些分片中,到達物理網卡上線,緩存分片服務被打垮,緩存擊穿請求‘穿透’引起‘雪崩’的問題。常見的方法是結合使用服務端緩存、Memcache等,但是需要提前獲知熱點、緩存容量依然有限、增長不一致時間且熱點key遺漏等。目前,受益於讀寫分離架構,搭配負載均衡、讀寫分離自動路由和各節點高可用等,增加服務端能力高效快速發現熱點資料,從而應對熱key困境。

Redis未完,NewSQL待續

阿裡云云資料庫 Redis 版相容Redis協定標準的、提供持久化的記憶體中資料庫服務,基於高可靠雙機熱備架構、可無縫擴展的集群架構以及讀寫分離架構,滿足高讀寫性能場景及容量需彈性變配的業務需求。

關於非關係型數據庫,阿裡雲還有可根據不同場景切換引擎的MongoDB 3.4、首個全託管的DBaaS服務HBase 1.1,與開源社區版本相比,前者高連接數下併發提升10倍、短連結併發提升5倍,後者支持本地盤成本下降90%、整體性能提升3倍。

Figure 4:阿裡雲擁有全球最完善的NewSQL雲資料庫家族

沒有NewSQL,企業將無法從容應對大規模增長的資料,多維模型、聚合、大資料計算、物聯網應用、機器學習實踐等等新場景都會非常艱難。隨著未來不斷發展演進,各類資料庫或許會逐漸融合為一,那時我們只需要線上外掛程式式的方法,根據不同業務需求選用即可。

需要在瘋狂灌人時逐步增大配置以做到資源合理高效利用,比如從標準版一鍵升級到極致版需要秒級遷移使用者數並且做到服務不收影響;在遊戲低峰收尾業務時多服合併,即將多個服務資料庫匯總到一個再做即時降級。同時,還要雲上雲下資料打通,資料歸檔快速回滾,做到時間點或局部恢復。

而對於視頻直播行業,瞬間大量使用者湧入的場景非常需要快速存儲、快速回應,基於朋友關係的送禮物、討論評論等大部分數據操作都適合非關係型數據庫,而僅有充值等少量場景需要關係性資料庫,因此重度依賴Redis資料庫,相應地則有“穩定性高於一切、低記憶體高QPS、連接數較大”的技術要求。相應地,阿裡雲出臺的視頻直播方案具備連接數可普調至1-2w、頻寬可單獨調配及至萬兆, 集群支持熱點key,讀寫分離等

此外,民生類的行業又會分為極高QPS,熱升、無縫擴容的新聞類,容災、多活的交通類,容災、資料安全的金融類,根據各種場景給出回應的優化方案。

關於阿裡雲Redis 4.0雲資料庫增強版的一些細節

阿裡云云資料庫Redis版發佈的增強版具有多執行緒架構、記憶體壓縮演算法優化、key後臺刪除功能、Redis module、Redis熱key統計等特點,尤其值得一提的是該款產品通過創新的Redis module讓資料庫第一次有了“集裝箱貨輪”的能力。

Figure 3:Redis module讓資料庫擁有“集裝箱”能力

一般而言,傳統的單核CPU需要承擔30%計算和60%網路的工作負載,而當採用多核處理之後,可以將計算、網路任務分別交給若干個CPU並將性能提高三倍,從根本上解決問題從而高併發任務量。同時,還通過創新的記憶體壓縮演算法,將資料量壓縮50%。

熱key統計是為了解決熱點事件時大流量請求集中落在某些分片中,到達物理網卡上線,緩存分片服務被打垮,緩存擊穿請求‘穿透’引起‘雪崩’的問題。常見的方法是結合使用服務端緩存、Memcache等,但是需要提前獲知熱點、緩存容量依然有限、增長不一致時間且熱點key遺漏等。目前,受益於讀寫分離架構,搭配負載均衡、讀寫分離自動路由和各節點高可用等,增加服務端能力高效快速發現熱點資料,從而應對熱key困境。

Redis未完,NewSQL待續

阿裡云云資料庫 Redis 版相容Redis協定標準的、提供持久化的記憶體中資料庫服務,基於高可靠雙機熱備架構、可無縫擴展的集群架構以及讀寫分離架構,滿足高讀寫性能場景及容量需彈性變配的業務需求。

關於非關係型數據庫,阿裡雲還有可根據不同場景切換引擎的MongoDB 3.4、首個全託管的DBaaS服務HBase 1.1,與開源社區版本相比,前者高連接數下併發提升10倍、短連結併發提升5倍,後者支持本地盤成本下降90%、整體性能提升3倍。

Figure 4:阿裡雲擁有全球最完善的NewSQL雲資料庫家族

沒有NewSQL,企業將無法從容應對大規模增長的資料,多維模型、聚合、大資料計算、物聯網應用、機器學習實踐等等新場景都會非常艱難。隨著未來不斷發展演進,各類資料庫或許會逐漸融合為一,那時我們只需要線上外掛程式式的方法,根據不同業務需求選用即可。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示