HBase能夠支持百TB數據規模、數百萬QPS壓力下的毫秒響應,適用於大數據背景下的風控和推薦等在線場景。阿里雲HBase服務了多家金融、廣告、媒體類業務中的風控和推薦,持續的在高可用、低延遲、低成本方向上進行優化。目前單集羣承諾可用性99.9%,SSD機型上能夠作到請求毛刺99.5% < 50ms,以及新上線的表內冷熱分離能夠加速熱數據訪問性能、減小冷數據存儲成本而且在API上對用戶透明。爲了進一步知足客戶在可用性以及低延遲上的訴求,阿里雲HBase將提供以主備架構爲平臺,以冗餘、併發、隔離、降級等全方位服務爲支撐的高可用解決方案,目標提供99.99%可用性、99.9%請求小於50ms。目前高可用項目一期已經完成,本文將介紹主備架構以及一鍵切換能力。html
一個HBase系統包含了Zookeeper、HDFS、HBase三個組件。其中Zookeeper在數據和計算上都進行了冗餘,且是一個可自愈系統,單節點故障可在秒級恢復。HBase對Zookeeper是輕依賴,通常不會出現大問題。HDFS是一個Master-Slave模式的分佈式文件系統,存在中心節點Namenode,Namenode支持以HA方式部署,單Namenode故障可秒級恢復,在兩個NN都宕機的狀況下依然能夠重啓自愈,但恢復時間取決於回放日誌大小,在分鐘級別。數據多副本冗餘,Datanode單節點宕機不中斷服務。HBase也是一個Master-Slave模式的分佈式系統,其中HMaster不參與讀寫路徑,所以HMaster宕機不中斷服務,但長期宕機會影響負載均衡、Failover等能力,HMaster支持HA方式部署。HBase還有一個單點是Meta服務,它隨機選擇一個RegionServer節點做爲宿主,若是meta服務不可用則全部請求路由會失效,致使總體不可用。因爲客戶端有路由緩存,meta服務停機不會當即形成不可用。HBase數據分片使用Range Partition的方式,每個Region由一個RegionServer服務,即HBase的計算服務是0冗餘,所以當RegionServer故障時多個分片不可服務。HBase Failover機制能夠自愈,單RegionServer宕機恢復時間在分鐘級,多個RegionServer宕機恢復時間在10分鐘~1小時時間不等。node
case1 某金融公司自建HBase因ECS重啓致使WAL數據破壞,HBase Failover沒法進行,集羣不可用沒法自愈
case2 某視頻公司自建HBase集羣Meta數據陷入不一致沒法恢復,形成分區沒法上線,部分表不可用沒法自愈
case3 某媒體公司IO壓力較大常常觸發空間泄漏Bug,致使空間不足集羣宕機沒法自愈
以上是真實的案例,Bug是不可避免的,未知Bug處理考驗內核團隊的技術實力,須要具有外科手術的能力,但其處理時間是不可預期的。緩存
故障恢復時間可預知的高可用系統,故障發生時能夠在分鐘級別恢復讀寫能力。實現方案選擇經典的主備模式,也支持主主模式。備集羣部署在同城的不一樣機房內,在資源層面徹底隔離,軟件可部署不一樣的版本,最大程度保持兩個集羣的獨立性。從經驗數據出發,單機房故障恢復時間的上限爲1個小時,在這1個小時內另外一個機房也發生故障的機率很是低,有兩種狀況除外:第一種是城市級災難,這個須要異地容災方案;第二種是故障源於業務流量增加,系統過載,此時的解決方案是限流或者擴容。這兩種狀況不在本文設計考慮以內。系統提供一鍵切換能力,不須要客戶端重啓,每個客戶端在收到切換信號時會自動完成鏈接的切換,客戶端的切換是併發進行的,全部客戶端能夠在10秒內完成切換。安全
高可用方案能夠獨立提供給自建使用,支持自建和雲HBase混合主備。若是你已經擁有一個HBase集羣,能夠方便的彈出一個冗餘備集羣,備集羣的建表和數據複製都是自動完成。當故障發生時,能夠在控制檯切換流量到備庫,待主集羣恢復後再把流量切回。雲HBase高可用服務是一個獨立的服務,能夠看作是基於HBase之上的一箇中間件,支持混合雲是咱們的設計原則,雲上同VPC下的自建HBase、EMR HBase、雲HBase能夠方便的進行主備混合使用,對於IDC自建HBase或者它雲上的HBase則須要用戶自行解決網絡聯通。網絡
簡單易用,HBase客戶端從普通模式轉化爲高可用模式不須要修改代碼。雲HBase會提供一個插件集成到HBase客戶端,而且爲高可用提供一個新的Endpoint。這個Endpoint就是簡單的 ip+port,用來替換單集羣模式下的Zookeeper地址。用戶能夠選擇核心表進行高可用建設,非核心表依然保持單集羣來下降成本。對於高可用的表,能夠經過高可用客戶端進行建立、修改和刪除,控制檯會保證主備集羣元數據的一致性。目前咱們支持0.9六、0.9八、1.x、2.x、雲HBase加強版等多個版本。架構
綜上所述,雲HBase主備高可用架構以下圖:併發
雲HBase並無採用開源的Replication方案,主要的緣由包括:負載均衡
BDS Replication是一個獨立的數據複製服務,提供延遲百毫秒級別的雙向數據同步能力。BDS Replication能夠獨立的擴容縮容,它不須要磁盤,能夠更好的管理成本。異步
雲HBase主備採用的是異步複製,提供基於版本的最終一致性。寫入主庫的一行數據在同步到備庫時,會保持和主庫一致的版本號。雲HBase高可用目前僅支持最終一致性切換,在切換時主備可能存在秒級的不一致。對於風控、推薦、畫像類的應用,最終一致性是知足需求的。若是您使用了CheckAndPut、CheckAndDelete這樣的接口則會出現一致性問題,此種狀況請聯繫雲HBase提供技術諮詢。分佈式
配置服務有兩個做用,存儲主備集羣的地址信息和通知切換命令。高可用客戶端在啓動時會訪問該服務加載主備集羣地址信息。經過控制檯執行的切換命令也會由配置服務通知全部的客戶端。配置服務自己採用了冗餘來保障存儲和消息的高可用。
高可用服務能夠實時顯示主備集羣的狀態。主、備角色在初始配置時肯定不能更改,但狀態"active/standby"是可變化的,處於"active"狀態的集羣是目前客戶端訪問的集羣。提供主備集羣雙向同步鏈路的實時延遲展現,同時提供客戶端連接數量監控,使得用戶能夠準確的判斷切換進度。
若是您已經使用了雲HBase而且但願增長一個備庫,只需以下步驟
若是您使用的是ECS自建集羣或者EMR HBase,但願增長一個備庫,只需以下步驟
具體的操做流程請參考手冊:https://help.aliyun.com/document_detail/140940.html?spm=a2c4g.11186623.6.719.30954117Tg56BR
本文做者:daniel.meng
本文爲雲棲社區原創內容,未經容許不得轉載。