内容簡介:
一、Redis生态工具使用場景
1、遷移與同步
2、備份與恢複
3、資料管理
4、自治服務
二、上下遊産品關聯場景
1、Redis和資料庫應用場景
2、Redis和大資料應用場景
(一)Redis生态工具使用場景
1、Redis生态工具總覽
Redis的生态工具分為兩類,第一類是自研Redis工具包Redis-shake,可以實作Redis解析、備份、恢複和同步;第二類是阿裡雲資料庫團隊提供的成熟的生态工具産品,包含4個産品,DTS支援Redis的遷移與同步,DMS支援Redis資料管理,DBS支援Redis的備份與恢複,DAS支援Redis的自治服務。
2、Redis-shake介紹
Redis-shake是阿裡雲自研的開源Redis資料傳輸工具,支援對Redis資料進行解析(decode)、恢複 (restore)、備份(dump)和同步(sync或rump),易于部署,靈活高效。
Redis-shake功能:
Ø 上雲遷移
支援自建Redis遷移、雲資料庫Redis遷移,以及其他雲Redis遷移至阿裡雲。
Ø 備份恢複
備份的過程是将雲資料庫Redis版執行個體中的資料備份到RDB檔案中,恢複的過程是将Redis的備份檔案内的資料遷移到原資料庫Redis執行個體中完成恢複。
Ø 單向同步
支援自建Redis之間的同步,也可以支援自建Redis與雲資料庫Redis之間的同步。
3.Redis-shake支援Redis遷移與同步
Redis-shake最基本也是最重要的能力,是支援Redis的遷移與同步。Redis shake的同步模式,可支援Redis-shake全量資料遷移和增量資料遷移,下圖是Redis shake,支援Redis遷移同步的工作原理。

首先Redis-shake向原Redis資料庫發送同步請求,原Redis資料庫發送rdb檔案,并寫入到目标Redis資料庫中,在全量資料遷移結束後,開始進行增量資料遷移,以上是對Redis shake工具的介紹。
4、資料傳輸DTS介紹
資料傳輸DTS是阿裡雲提供的生态工具産品。可以在公共雲、混合雲場景下,解決遠距離、毫秒級異步資料傳輸難題。它底層的資料流基礎設施為阿裡雙11異地多活基礎架構,為數千下遊應用提供實時資料流,已線上上穩定運作6年之久。
Redis通過DTS可以實作的場景有上雲遷移,實時同步,異地多活,緩存更新。
5、DTS支援Redis上雲遷移
場景一:上雲遷移
DTS支援Redis的上雲遷移,相比于傳統遷移方式來說,傳統的遷移方式要求在資料遷移期間,停止向源資料庫寫入資料,即需要停機遷移,來保障資料的一緻性,根據資料量和網絡的情況,遷移所耗費的時間可能會持續數小時甚至數天,對業務影響較大。
DTS可以提供不停機遷移的解決方案,隻有當業務從源執行個體切換到目标執行個體期間會影響業務,其他時間業務均能正常提供服務,将停機時間降低到分鐘級别。
上圖是DTS支援資料遷移的原理圖,Redis資料庫沒有結構遷移部分,隻有全量資料遷移和增量資料遷移兩部分。首先對原資料庫進行全量資料遷移,全量資料遷移啟動的同時,增量資料遷移也要啟動,開始增量資料的拉取,在全量資料遷移結束之後,開始增量資料的回放,等到源庫和目标庫的資料基本同步之後,進行資料庫的切換,切換以後業務應用就可以在新的目标庫上進行讀寫,以上是DTS支援Redis上雲遷移的場景。
6、DTS支援Redis緩存更新
Redis經常會作為應用和關系型資料庫的緩存使用,目的是為了提高業務的通路速度,提升業務的讀并發。
DTS 提供了資料訂閱的功能,可以異步訂閱資料庫的增量資料,更新緩存的資料,實作輕量級的緩存更新。
通過DTS訂閱實作緩存更新的優勢:
1、更新路徑短,業務完成更新資料庫後直接傳回,不需要關心緩存失效流程,延遲低。
2、應用簡單可靠,應用無需實作複雜雙寫邏輯,隻需啟動異步線程監聽增量資料,更新緩存資料即可。
3、應用更新無額外性能消耗,資料訂閱通過解析資料庫的增量日志來擷取增量資料,不會對業務和資料庫性能造成影響。
7、DTS支援Redis雙向同步
DTS可以支援Redis企業版執行個體間的雙向同步,适用于異地多活資料容災等應用場景,可以實作業務的就近讀寫,減少通路延遲。最典型的場景,比如遊戲類的應用,可以實作就近開服。
使用DTS雙向同步注意事項
1、雙向資料同步時,正向資料同步作業會執行全量資料初始化和增量資料同步 ,反向資料同步作業僅執行增量資料同步。
2、為保障資料一緻性,雙向資料同步作業運作期間,請勿在兩端資料庫同時對同一個key執行修改或寫入操作。
綜上所述,也就是在應用上要對資料進行分片。
8、DBS支援Redis備份恢複
資料庫備份DBS是阿裡雲提供的低成本、高可靠的雲原生資料庫備份平台。DBS通過資料庫日志解析同 步技術完成備份恢複,業務RPO/RTO可達秒級。 DBS支援檔案、日志、資料庫等全站備份,支援本地資料中心、其他雲廠商、ECS資料庫及雲資料庫等環境,是企業級混合雲統一備份平台。
基于DBS Redis可以實作混合雲備份和容災備份,混合雲備份無論Redis是在阿裡雲其他雲或者本地資料中心,均可以是通過DBS實作統一的資料庫備份。
容災備份,通過DBS對Redis進行備份,可以符合一定等級的等保合規要求。
9、通過DMS管理Redis
DMS也是阿裡雲提供的生态工具産品,可以便捷地管理Redis資料庫,支援通過指令或界面來操作資料,同時支援更多擴充功能,比如操作審計功能,通過DMS操作的所有記錄都可以被追溯。
DMS支援Redis、文法,除了開源Redis的文法之外,還支援阿裡雲Redis企業版的文法,Tair的文法。
10、通過DMS實作人員資料安全
資料管理DMS企業版,為企業的客戶提供了資料安全解決方案,包含權限管控、資料管控、變更管控.
【權限安全】通過DMS安全協同可控制DB級、key級的權限 。
【資料安全】每人每天查詢的次數可按需進行管控,管理者可按需調整,避免過多資料的接觸 。
【變更安全】支援對非隻讀的更新操作進行安全管控,可将更新操作限制需要工單指定人員審批後執行,對高危操作可禁止送出執行。
通過DMS提供的授權管理方式,如下圖所示。
首先企業中不同角色的人員根據各自需求進行權限的申請,DMS有統一的授權管理體系,包含離職轉崗賬号回收,key級别的權限管控,面向個人雲賬号,權限過期的提醒等,最終通過授權給DMS使用的賬号,均可以進行相應粒度的權限的賦權。
11、通過DAS實作Redis自治服務
資料自治服務DAS是阿裡雲提供的生态工具産品。基于機器學習和專家經驗實作資料庫自感覺、自修複、自優化、自運維及自安全的雲服務。幫助使用者消除資料庫管理的複雜性及人工操作引發的服務故障,有效保障資料庫服務的穩定、安全及高效。
通過DAS實作Redis的監控大盤、巡檢評分和AutoScaling三個能力,監控大盤可以實作多執行個體的同時監控,名額異動一目了然;巡檢評分可以對執行個體進行健康度進行綜合評分,重點治理得分低的執行個體;AutoScaling可以實作自動彈性擴縮容,應對業務高峰。
示範;
通過DAS實作Redis自治服務的使用方式,下圖是資料庫自治服務的控制台。左側可以看到監控大盤,在監控大盤裡找到Redis,如選一個已經建立的監控大盤,在這裡可以看到多個執行個體,同次元的一個曲線圖。如何建立監控大盤,點選新增監控大盤,命名後,選擇你要監控的執行個體,然後在選擇想要監控的名額,選擇好後就可以在這裡看到Redis的監控大盤。
Redis的執行個體的巡檢得分,如下圖所示巡檢評分可以看到所有執行個體的評分,如這裡有扣分詳情,目前這個執行個體是沒有扣分的,有執行個體的評分報告。
然後再看一下AutoScaling的功能,彈性擴縮容的功能,現隻對雲盤社群版進行提供。
下圖所示,在執行個體詳情内,自制中心中可以通過自制功能開關進行開啟,開啟自助服務後點選自動擴容,可以設定根據業務的情況設定門檻值,在門檻值設定了之後,如果業務達到預值之後,就會自動的向上擴容。
(二)Redis上下遊産品關聯使用場景
1、Redis與資料庫RDS場景
雲資料庫RDS是關系型資料庫的統稱,包含MySQL、SQL Server、PostgreSQL、MariaDB四款産品。
Redis以關系型資料庫結合的場景,最經典的場景就是Redis類型詞作為資料庫的緩存使用,Redis 作為底層資料庫的緩存,可以有效降低資料響應時間,提高吞吐量和并發處理能力,降低後端資料庫負載,提升整體業務處理性能。
下圖的架構是網際網路行業最經典的架構,緩存資料可以持久化,并且提高高可用架構,滿足業務可用性和資料可靠性的要求。
Redis會話緩存場景,利用Redis會話緩存,使用者偏好設定等資訊可以實作快速認證,降低對後端資料庫的通路。
2、Redis 資料庫vs緩存
Redis在某些場景中既可以作為資料庫使用,也可以作為緩存使用,在業務中可以根據各自的需要去決定Redis的使用方式,如在遊戲場景,Redis可以直接作為資料庫使用,遊戲部署架構相對簡單,Redis作為存儲資料庫使用,主程式部署在ecs上,所有業務資料存儲在Redis中作為持久化的資料庫使用,Redis也可以作為緩存去使用,加速應用通路,資料存儲還是存儲在後端的RDS資料庫中。
電商行業秒殺類的購物系統,大型的促銷等,整體通路壓力非常大,雲Redis支援持久化功能,可以直接選擇Redis作為資料庫系統的使用,除了秒殺秒殺場景外,電商行業中在商品展示購物推薦的子產品也會用到Redis.
Redis作為緩存使用,如技術系統的庫存系統底層,用rds存儲具體資料資訊,資料庫字段中存儲具體技術資訊,雲資料庫Redis版,用來進行計數的讀取 RDS存儲寄宿資訊。
3、将MySQL資料遷移到Redis
Redis作為緩存,首先要将關系型資料庫中的資料遷移到Redis中。關系型資料庫中庫表結構的資料無法 直接傳入以鍵值結構儲存資料的Redis資料庫,遷移前需要将源端資料轉換為特定的結構。
遷移場景:
阿裡雲RDS MySQL執行個體和雲資料庫Redis版執行個體作為遷移的源端和目的端,運作遷移指令的Linux環境 安裝在ECS執行個體中,在ecs中進行。
下圖所示,第一張圖是遷移前的資料,遷移前的資料是放在MySQL中的結構化的資料,在遷移之後需要轉換成 kv結構的資料,是以可以根據業務的情況選擇一個列資料作為key,如選擇使用者的ID作為key的結構,在買MySQL的資料遷移到Redis之後,可以就可以進行正常的業務應用通路。
4、Redis與資料庫rds的增删改操作
1、查詢操作
前端發來請求時,先進行緩存的查詢,如果緩存存在要查詢的資料,則傳回。否則去資料庫 中查詢,并添加到緩存中,再傳回資料,這樣 在下次查詢時,便可直接從緩存中取。
2、添加操作
添加操作直接添加到資料庫即可,也可以在添加到緩存的同時添加到資料庫。但在資料量較大時,推薦 的做法是先将資料添加到緩存,在另一個線程中将資料同步到資料庫。
2、修改操作
修改操作先修改資料庫,再将緩存的資料删除即可。
5、Redis與大資料應用Spark
Spark是專門為大規模資料處理而設計的快速通用的計算引擎,有非常廣泛的生态,如廣告公司在網頁上投遞動态的圖檔廣告,廣告的展示形式是根據熱點圖檔動态生成的,為了達到收益的最大化,需要統計廣告的點選數來決定哪些廣告可以繼續投放,哪些廣告需要更換。
基于以上的場景可以選擇 spark和Redis來解決。
首先使用者的點選資料進行提取,通過Redis進行處理,資料到 spark中進行流資料的處理,并進行一定計算,Etl等操作完成處理以後,再通過Redis在應用端進行展現。