摘要:GaussDB(for Redis)的雙活解決方案,支持同域主備、同域雙主、異地主備、異地雙主四大應用場景,提供了安全可靠的容災能力,
一場火災引發的思考
2021年3月10日,歐洲某云服務提供商的資料中心發生火災,當地消防部門出動上百名消防員才將大火撲滅,受影響的服務器共托管了約360萬個網站,火災過后,這些受影響的網站大多處于關閉狀態,
機房火災、網路例外、電力故障、自然災害等極端場景,對互聯網業務的連續運行有著巨大的威脅,
在安全組、反親和、多可用區部署等能力加持下,如今的云服務已能夠給客戶業務帶來比“自建”更可靠的保障,在面對上述極端災害場景中,云服務也能提供更高級的防范方案——雙活容災,
誰說Redis不能雙活容災?
今天我們來聊聊全世界機房里的主力資料庫服務——Redis,作為業務剛需,Redis有兩大類典型應用場景:
1)快取
Redis作為資料庫快取,搭配MySQL或其他關系型資料庫使用,一旦快取故障失效,高并發的流量請求將對下游資料庫造成嚴重沖擊,無法繼續支撐高并發業務,雪崩甚至可能導致系統完全不可用,
2)主資料庫
Redis獨立存盤核心資料,兼顧持久化與高并發訪問,一旦Redis發生嚴重故障,將造成用戶核心資料丟失以及關鍵業務不可用,
可見Redis的穩定性是企業要考慮的TOP問題,但是由于資料無法可靠存盤、架構不穩定等原因,開源Redis很難像MySQL那樣做出穩定可靠的雙活系統,這也是國內云廠商很少主推Redis雙活容災的原因,
在華為內部,比如華為商城、流程IT平臺等大型業務,對資料庫(尤其是MySQL、Redis)都有很高的可靠性要求,在與這類企業級專案的聯合演程序序中,云原生資料庫GaussDB(for Redis)推出了企業級的雙活容災方案,支持四大應用場景,為業務的持續運行保駕護航,
企業級雙活容災,要看GaussDB(for Redis)
GaussDB(for Redis)的雙活容災是基于GaussDB NoSQL存算分離架構,建立可靠的資料傳輸鏈路,實作兩個實體間資料同步,如果實體A遇到突發故障導致不可用,客戶的業務可以快速接入實體B,避免業務長時間受損,
從原理上看,資料庫實體內增加高可靠性的Rsync資料同步服務,實時監控WAL增量日志,決議后將資料同步到目標實體,
上圖中實線表示實體A向實體B同步資料的路徑,虛線表示實體B向實體A同步資料的路徑,雙活解決方案支持配置為單向同步或雙寫同步,實體A和實體B可以部署在同一個Region,也可以部署在不同的Region,
因此,將兩個GaussDB(for Redis)實體的部署位置和主備角色進行不同組合,能搭建出不同形態的雙活容災組網,客戶可以根據自身的業務規劃和使用場景自由選擇,
GaussDB(for Redis)雙活容災:四大應用場景
接下來我們詳細聊一下GaussDB(for Redis)雙活容災的不同組網形態,
同域雙活部署在同一Region,通過對等連接打通網路,對等連接無帶寬費用,同步時延在毫秒級,又分為同域主備模式和同域雙主模式,
異地雙活部署在不同Region,可以是同一城市的不同Region互通,也可以是全球不同城市互通,通過跨域的云連接打通網路,需要根據業務的寫流量來配置合適大小的帶寬,
綜上,GaussDB(for Redis)雙活容災共支持四大應用場景:
同域主備模式
在同域主備模式下,主實體可讀可寫,備實體只讀,資料從主實體單向同步到備實體,如果主實體發生故障,可以將備實體角色變更為主實體,業務繼續從新的主實體接入處理讀寫操作,
同域主備模式適合在同Region低成本獲取容災能力、有讀寫分離訴求的業務場景,相比同域雙主模式具備更高的資料一致性,不擔心雙實體寫沖突的問題,相比異地雙活的成本更低,
同域雙主模式
在同域雙主模式下,兩個實體都是可讀可寫,任一實體都可以發起資料同步,雙實體不涉及業務切流,
同域雙主模式適合在同Region低成本獲取容災能力、有雙寫訴求的業務場景,相比同域主備模式,兩個實體的計算節點都在處理讀寫業務,資源利用率更高,但需要在業務層面避免key沖突的問題,相比異地雙活的成本更低,
異地主備模式
在異地主備模式下,主實體可讀可寫,備實體只讀,資料單向同步,主實體故障時由備實體繼續處理業務,
異地主備模式適合期望有跨Region容災能力、有讀寫分離訴求的業務場景,例如金融服務或核心用戶資料等,相比異地雙主模式具備更高的資料一致性,不擔心雙實體寫沖突的問題,相比同域雙活具備跨Region容災能力,
異地雙主模式
在異地雙主模式下,兩個實體都是可讀可寫,資料雙向同步,任一實體發生故障則由另一實體繼續處理業務,
異地雙主模式適合期望有跨Region容災能力、有雙寫訴求、或者異地業務希望在就近Region接入資料庫獲取更低時延的業務場景,例如廣告競價、推薦系統等,相比異地主備模式,資源利用率更高,需要避免key沖突的問題,相比同域雙活具備跨Region容災能力,
雙活容災方案已在超大規格集群上驗證穩定可靠
華為內部某重要業務部門在超大規模集群(1w+個vCPU算力,1000+TB資料量)上,使用了基于GaussDB NoSQL統一架構的雙活解決方案,在故障演練中進行了一系列嚴苛的可靠性測驗,其中包括模擬機房斷電、網路故障等場景,最終,GaussDB(for Redis)的雙活容災能力,充分滿足了業務部門對RTO和RPO等指標的嚴格要求,
總結
綜上所述,GaussDB(for Redis)的雙活解決方案,支持同域主備、同域雙主、異地主備、異地雙主四大應用場景,提供了安全可靠的容災能力,具體亮點如下:
- 組網靈活,按需搭建雙活容災系統
- 支持秒級快照,快速搭建雙活關系
- 支持實時同步最新資料,同Region時延毫秒級
- 采用多執行緒異步并發模式發送資料,按Key保序
- 基于WAL單調遞增特性,采用滑窗機制確保可靠傳輸
- 采用Reactor事件管理的機制,全流程批量高效發送
- 支持例外重傳,解決網路抖動導致的丟包或延遲現象
- 支持斷點續傳,每個DB持久化應答過的同步日志序號,在發生宕機、網路隔離、行程重啟等故障場景,可從該位置進行續傳,
附錄
- 本文作者:華為云資料庫GaussDB(for Redis)團隊
- 更多產品資訊,歡迎訪問官方博客:bbs.huaweicloud.com/blogs/248875
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504529.html
標籤:MySQL
