一、Redis與阿裡雲Redis
1)什麼是Redis
Redis 是當今世界最流行的Key-Value分布式緩存服務,提供多種資料結構,具備高性能、多架構、運作穩定、安全等能力,被廣泛應用于網際網路等行業。尤其是對高并發、高QPS的場景下, Redis被無數開發者和企業認可,是應對 DNS業務産品的不二選擇。
Redis在全球DB Engings Ranking,2020/11最新排名中所有資料庫類排名第七,在緩存類資料庫常年排名第一。
關系型資料庫與Redis緩存資料庫做類比可知:
- 關系型資料庫是以結構化的形式把資料存儲在磁盤上,單節點QPS是在5000~10000左右,比較适合複雜查詢。
- Redis是高速緩存的資料庫,資料結構相對比關系型資料庫簡單,主要以Key-Value形式存儲相關資料,資料都是儲存在記憶體,讀寫也是發生在記憶體裡,雖然沒有持久化。單節點QPS 8~10萬,與 Value的大小不同或機器CPU主頻的不同也有差異,适合快速資料提取的工作。
2)阿裡雲Redis産品全景
阿裡雲Redis産品全景:如下圖所示,分5小塊,實際上分三大類:全托管、專屬叢集、多雲關聯。

全托管主要線上上提供了Redis和Tair兩種形式。Redis為廣大客戶提供了雲上的原始資料庫的開源托管服務,是使用者上雲快速接入的首選。為了給使用者提供原汁原味的Redis體驗,支援标準的組成和叢集兩種架構,功能上完全相容社群特性,并且做了很多優化。在釋出政策上,緊跟社群的釋出速度。阿裡Redis是全球首個對Redis 6.0進行支援的全球大型雲廠商。
在客戶業務的快速發展中,開源Redis慢慢凸顯出來局限性,是以在相容Redis的前提之下,推出了企業版的記憶體資料庫Tair,也叫Redis企業版,定位在雲原生的記憶體資料庫,在性能、核心企業級能力、記憶體池化等方面為使用者提供更強的能力。專屬叢集是為大客戶專享,以自建的體驗獲得雲上的服務。Tair MagPie将Tair能力延伸到他雲、IDC的标準K8S服務上,緩解客戶的綁定焦慮、地域不滿足,企業政策等無法遷移上阿裡雲的現實安排。
3) 阿裡雲全托管Redis與Tair的定位
阿裡雲全托管Redis與Tair的定位,首先Redis作為使用者上雲的首選,完全進入社群特性,緊跟社群釋出速度,而且盡可能的做到和社群的 PR相關的合并都盡可能的跟進。另外會積極貢獻社群,因為有Redis全球開發維護團隊的5人小組的成員之一,在阿裡雲,有3個人是在Redis原廠,還有一個在AWS上,我們的成員是全中國唯一一個進入全球開發小組的成員,是以對社群版的貢獻非常多。
在社群版之上,自研了企業級的Tair(Redis企業版),主要是在最大程度保證Redis API和資料結構相容,滿足使用者特定應用功能需求以及差異化性能、成本考量和高标準的容災需要。另外推出,線上上有Redis增強型的資料結構,滿足使用者在各個場景下的需求。在Tair(Redis企業版)上,主要是有性能增強型、持久記憶體型、容量存儲型,這三種均包含标準主從、叢集,前兩者開放讀寫分離能力。
4)阿裡雲Redis産品系列各形态簡介
阿裡雲Redis産品系列各形态,從高通路強度到高存儲密度的演變,可以看到阿裡雲原來是使用對于性能要求最高的部分,使用 Tair 性能增強型産品,滿足客戶極緻的性能要求。在通路強度稍微要求低一些的使用者可以選擇開源Redis,并且随着使用者通路強度逐漸降低,成本成為客戶的考量因素時,Tair推出了持久記憶體型和容量存儲型兩種形态。在整個記憶體資料庫層面,提供了非常完整的産品矩陣,覆寫了客戶從高性能到大容量的各種需求。
本次介紹的阿裡雲MyBase for Redis專屬叢集包含Redis社群版和Tair性能增強型,兩個性能要求比較高的産品形态。
二、阿裡雲MyBase for Redis
1)我們為什麼要做專屬叢集?
首先作為雲廠商,提供Redis相關資料庫服務都屬于雲托管,使用者在界面上下單購買Redis服務,拿到Redis資料庫,但是對于大型自建Redis客戶有局限性,對此我們做了相關産品的分析和規劃。
第一,傳統的大型自建Redis客戶,有完整的運維體系,從執行個體建立銷毀,到配置設定到哪一個主機的資源排程,再到相關的告警和監控,雲上托管版Redis都沒有辦法完全與原先的運維體系進行整合。
第二,由于雲上托管版Redis資源配置設定政策,每一種Redis現在售賣的規格都有相關帶寬限制,每一個規格的帶寬限制都會導緻其無法充分利用,在有熱點業務流量沖擊時,帶寬會成為瓶頸。
第三,由于與大型自建Redis客戶存在差異,整個體系無法融合,過去的DBA管理運維系統無法再充分利用,對客戶上雲是比較大的阻力。
第四,資源排程對客戶來講是黑盒,如何能讓客戶放心像使用自建雲托管版Redis一樣,我們還需要在專屬叢集産品形态上給到客戶。包括資源是否充分利用,在Redis叢集形态下是不是不在同一個實體機上等疑問,都是雲托管MyBase作為黑盒存在需要解釋的問題。
總結:
① 自建Redis整體上雲原先運維體系無法使用。
② 由于規格的帶寬有所限制,無法充分利用主機帶寬,不能應對熱點業務的流量沖擊。
③ 由于雲上服務形态的限制,無法充分複用過去的運維管理經驗與現成工具、系統。
④ 資源排程黑盒,資源是否充分利用、是否打散均不了解。
2)我們為什麼要做?
能不能在雲上享受雲Redis服務,但同時又可以像使用自建Redis服務一樣有諸多自主權?
既然是想享受阿裡雲Redis相關的核心優化、管控能力的服務,首先要具備阿裡雲強大持續發展的Redis引擎能力,給使用者提供全面豐富的Redis管控功能,技術完全兜底。
給使用者提供自建Redis服務的體驗,需要下邊這幾個部分進行相關規劃:
第一部分:實體資源配置設定政策靈活。
第二部分:隔離性更強,使用者不用擔心自己的Redis執行個體和其他客戶的Redis執行個體混在一起。
第三部分:帶寬比自建Redis服務還要靈活精準設定,因為我們自建Redis服務帶寬都是按照規格設定死的,使用者在自建IDC上或者在專屬技術形态上是能夠自己設定帶寬。
第四部分:像自建Redis一樣充分利用持久化資料檔案。比如企業需要做容量分析,或者Redis資料在某一個時間點找不到地方做大資料分析,如果是自建服務直接讀取持久化資料檔案,讀出以後,通過解析資料化檔案進行進一步資料分析統計和加工。雲Redis服務不開放持久化資料檔案,這種應用場景下使用者會受到限制。
第五部分:像自建Redis一樣安裝子產品、調關鍵參數。Redis在5.0以後,大力發展子產品系統,包括有關鍵參數。這些參數、子產品在雲Redis服務上不開放,如果使用者需要用到這些,隻能自建,或者放棄這些功能用雲Redis。
第六部分:像自建Redis一樣可以自由部署性能采集工具。雲Redis的服務雖然有監控,有相關Open API來讓大家用,但是在Open API設計包括調用的頻率上都有限制。自建Redis有很多的性能采集工具,我們也希望在專屬叢集的形态上進行支援,讓使用者能夠把過去的性能采集工具、日志采集工具都能夠自由部署。
3)産品定義
雲資料庫專屬叢集MyBase for Redis,以主機形式購買雲資料庫服務,目前包括阿裡雲Redis産品中的Redis社群版和Redis企業版性能增強型。在賦予PaaS資料庫同樣能力之外,還具備CPU超配、網絡帶寬自主可控并整體超配、資源排程、彈性政策、更開放的權限、自主運維能力。
- Redis社群版:開源托管版服務;
- Redis企業版性能增強型:專門針對性能、資料備份,還有全球多活,實作高性能企業級的版本。
售賣方式:按月購買,至少購買兩台主機;主機付費,執行個體免費。
産品原理:
第一步:建立專屬叢集。使用者先去我們阿裡雲控制台上建立專屬叢集,建立專屬叢集的時候,需要選資料庫引擎,包括相關的超配比、排程模式。資料庫引擎有很多種,大家選Redis。專屬叢集是邏輯上的概念,不是實體上的概念。
第二步:購買主機。在建立專屬叢集以後,通過專屬叢集裡面的購買主機添加相關主機,主機是實際的概念,可以選各種規格、磁盤類型,兩台起配。選完主題以後,下單購買付費。
第三步:部署資料庫執行個體。在主機上面部署資料庫執行個體不收費,可以任意建立、銷毀,不經過任何計費系統。包括使用Redis社群版、Redis企業版,都不再另外收取費用。Redis社群版和Redis企業版在托管服務上價格還是有一定差異的,但是在專屬叢集上執行個體都是不收費的,隻在主機上收費,執行個體可以随便建立、銷毀。
第四步:營運資料庫。執行個體建立以後,可以自主對資料庫執行個體進行相關運維操作,包括和原來系統進行整合。
基本能力:
第一:完整雲Redis能力。所有雲Redis托管版服務,都在專屬叢集裡面。通過專屬叢集開出來的執行個體,和直接購買托管版的社群版或者是企業版性能增強型的執行個體一樣,能力、版本都一模一樣。
第二:實體資源排程能力。可以清楚地看執行個體在哪台機器上,整個主機的CPU、記憶體、網絡情況,使用者可以直接排程。
第三:資料庫資源開放。
第四:可內建DBaaS。
第五:資源超配能力。內建相關管控能力,具備資源超配能力。現在有 CPU超配能力,将來可能也會有記憶體超配能力。
4)MyBase for Redis 解決之道:雲Redis的專屬體驗
MyBase for Redis産品的好處是:提供了雲Redis的專屬體驗。雲上體驗:包括有強大核心持續技術更新,完整強大的管控系統,包含了診斷性監控、日志、備份、修改查詢資料,還有專家7*24小時支援。使用者有什麼問題都可以通過工單的形式來找到我們,由我們去解決。
除了雲上本來的體驗以外,在雲專屬叢集Redis部分,有三大特點:
第一:靈活度高,Redis/Tair自由建立銷毀執行個體,阿裡雲Redis社群版/企業版暢快使用,不用考慮退款等繁瑣事宜,适合企業進行池化管理與成本分攤。因為大家就能看到執行個體部署在哪些機器上,占用了多少記憶體。
第二,與現有運維監控體系最大融合,依托于開放的作業系統權限,可以部署監控采集agent,實作和自建運維和監控系統的良好融合,使用者遷移成本更低。如果使用者原來用的是Redis的open API來內建,專屬叢集不影響,open API都是給大家提供的,跟托管版是一模一樣的。
第三,帶寬自由配置、持久化資料檔案開放讀取能力,突破托管版執行個體規格的帶寬限制,另外開放持久化檔案友善後續資料分析和利用。
5)場景示例:雲上測試環境(靈活、開放、低TCO)
雲上的測試環境,需要更靈活、更成本更低,通過專屬叢集怎麼樣解決:
第一,在CPU上會有超配,測試環境可設定更大的超配比1:N,支援部署N倍數量的資料庫執行個體。測試成本大幅降低。
第二,提供資料庫混部,耗CPU和耗記憶體的資料庫混部,最大化提高CPU和記憶體的資源使用率,降低TCO。
第三,開放OS權限,可安裝部署工具軟體、運作自定義腳本、可檢視OS上的細節日志。測試驗證時,分析問題更友善。
第四,免費不限量的服務化資料庫執行個體,服務化的資料庫執行個體無需付費,不限量部署,點選數個按鈕即可完成部署,極大降低測試資料庫成本,縮短測試環境搭建時間。
第五,執行個體遷移,便捷的将主機上的執行個體遷移到其他指定主機。比對各業務部門之間,功能測試與性能測試等不同場景對資源占用,資源隔離的不同需求。
如上圖所示的示例:主機1用于功能驗證,資源共享。性能測試時,可遷移到資源相對富餘的主機2進行,大壓力性能測試,不影響其他功能子產品的正常運作。
6)MyBase for Redis 典型案例:CC視訊
CC視訊是一個做直播的公司,用Redis做相關消息傳輸,痛點在帶寬限制上,包括運維自主可控方面。使用MyBase for Redis後,我們做到了以下幾點,使客戶非常滿意。
- 在業務高峰時單執行個體順利支撐峰值1200MB/s的消息傳輸,并做到了無消息丢失,給直播平台的品質保證提到了一個新的高度。
- 專屬叢集不改變客戶DBA現有運維模式的同時,為Redis提供自動高可用、快速擴容能力,使得客戶更聚焦在業務本身。
- 優化的雲資料庫服務,提升客戶資料處理能力。