一文揭祕阿里雲Redis全球多活產品

簡介

Redis全球多活產品是阿里雲自研、基於雲數據庫Redis版(ApsaraDB for Redis)、100%兼容 Redis 協議的多活數據庫系統。通過數據同步通道,把多個Redis實例組網成1個邏輯上的 Redis 多活實例,多活實例內的所有實例均可讀寫並保持實時數據同步。數據同步通道通過內網打通,具有高可靠、高安全,低延遲的特性。子實例間通過CRDT(Conflict-free Replicated Data Type)機制檢測並解決數據衝突,保障數據最終一致性。Redis全球多活產品輕鬆支持異地多個站點同時對外提供服務的業務場景,助力企業快速複製阿里巴巴異地多活架構。
image這裏寫圖片描述

目前阿里雲Redis全球多活產品已開放售賣,相關產品介紹詳見https://promotion.aliyun.com/ntms/act/redis-geo-replication.html

產品架構

Redis多活實例由三部分構成:

雲數據庫 Redis 版實例
同步通道
通道管理器
image這裏寫圖片描述
雲數據庫 Redis 版實例

原生內核的日誌機制比較簡單,不足以支撐多活相互複製數據,我們對aof日誌改造爲binlog,把每一條aof日誌擴展爲oplog:

每條oplog包含一個全局唯一id(類似mysql的GTID),id包含兩部分, 一部分是Redis實例id,用於解決循環同步的問題,第二部分是遞增數字,保證有序和唯一。
oplog包含邏輯時鐘信息,在目標端Redis 執行merge時,使用CRDT策略解決數據一致性問題。
通道

每兩個redis實例間有負責同步oplog的雙向通道,同步過程根據oplog gtid保證exactly once語義,並且能處理 上下游Redis實例異常(主備切換、備庫重搭)。

通道管理器

負責通道生命週期管理

產品優勢

高可用

同步支持斷點續傳,最高可以容忍天級別的隔斷。
自適應處理上下游 Redis 子實例發生HA(主備切換)的情況。
高性能

多活同步的過程是異步的,對正常的Redis讀寫沒有性能影響。
高吞吐:標準版單向同步通道10萬tps,集羣版隨 Redis 節點數線性擴展。
低延遲:1個洲際內地域間數據同步延遲在百毫秒級,跨洲際地域間延遲在1秒級。

數據最終一致

在多活場景中, 由於存在多個實例且每個實例都可讀寫,則在同步過程中,一定會遇到數據一致性問題。如下圖,同時在redis實例A上寫入key value_A,在redis實例B上寫入key value_B,互相同步之後很可能實例A上key的值爲value_B,而實例B上key的值爲value_A,這種不一致可能是業務上是不能接受的。
image
這裏寫圖片描述
我們基於CRDT(Conflict-free Replicated Data Type)的方案,對redis內核進行針對性改造,實現了string、counter、hash、set、zset、hyperloglog、geo幾種數據類型的最終一致性.

功能豐富

多活支持Redis標準版,集羣版和讀寫分離版。
在多活同步過程中支持 Redis 子實例規格變配。
支持新增和刪除redis子實例。
應用場景

Redis 多活產品主要應用於異地多活業務架構的存儲層,業務層設計可以參考文檔《數據庫異地多活解決方案》。
image這裏寫圖片描述
原文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章