《專場9.1-多region分布式數據庫方案與實踐-趙飛翔.pdf》由會員分享,可在線閱讀,更多相關《專場9.1-多region分布式數據庫方案與實踐-趙飛翔.pdf(42頁珍藏版)》請在三個皮匠報告上搜索。
1、多region分布式數據庫方案與實踐趙飛祥趙飛祥Airwallex空中云匯 數據架構師曾就職于太極計算機、北京競技世界網絡技術有限公司、斗魚等企業。Oracle 10g OCP,11g OCM,Oracle YEP年輕專家。喜愛技術總結和分享、多次行業會議和沙龍演講嘉賓、IT Pub博客專家。2010年開始從事數據庫相關運維、架構、開發工作,涉足postgresql、mysql、Oracle、greenplum、MongoDB、redis等數據庫,目前主要研究PostgreSQL數據庫和DevOps方向個人博客:http:/ 關系型數據庫 SQL 非關系型數據庫 No-SQL 新型數據庫 Ne
2、w-SQL數據庫水平擴展 垂直擴展與水平擴展 分布式算法應用到DB 可以實現的特性更高可用性和健壯性可擴展性Rolling updateRolling upgrade多region數據寫的業務需求 多region和單region的業務需求 數據庫多點寫入的意義 多 region/點 寫是分部式數據庫區別單體數據庫的重要特征2.分布式數據庫常見方案多節點數據寫入的實現層面多節點寫入的不同實現:業務層:程序控制多節點寫入 代理層:控制多節點寫入 數據庫層:實現多節點寫入單region的數據多點寫入實現 MySQL MGR MySQL innodb cluster Cloud provider di
3、stributed database Cochroach DB Yugabyte DB選擇YugabyteDB作為分布式數據庫的主要原因Yugabyte DB單region多寫架構Yugabyte DB Universe Yugabyte Primary Cluster Yugabyte Read ReplicaYugabyte DB多region架構之 xCluster Primary Cluster Replica async jobYugabyte DB多region架構之 xCluster 1:1 xCluster 1:n xCluster n:n xClusterYugabyte D
4、B多region架構之 GEO-parition clusterYugabyte DB多region架構之 GEO-parition cluster 可以在多個region部署,能夠滿足 ACID一致性的global集群 每個table都要geo-location列,用于定位數據存放和查找地 每個表都是按照geo-location列進行list分區的分布表 不同region的數據,可以存放在不同的region,滿足法規要求 region級別的事務表和元數據下推,避免跨region事務 如果有跨region查詢,可以增加 read replica 進行 local readYugabyteDB
5、分布式數據庫常用架構三種常見架構:Primary cluster+Read Replica primary部署單region,主要實現高可用primary部署多region,主要實現 DR YugabyteDB xCluster多個region都是獨立的 Primary cluster,穩定性和性能好,注意數據沖突 YugabyteDB GEO-parition Cluster多個region是一個大的primary cluster,表是分區表,便于數據主權隔離3.分布式數據庫實現原理分布式數據庫與單體數據庫架構區別YugabyteDB分層數據庫架構YugabyteDB Universe之 Y
6、B-TServer ServiceYugabyteDB Universe 之 YB-TSaster ServiceYB Tablet Server的角色和功能:將PG中的table再次分片成更小的 tablet,并按照 replciation factor 實現 raft 協議同步和調度 tablet分片由YugabyteDB自動實現和完成,對應用透明,所有表必須由主鍵,且在第一次創建表時,就要創建好 tablet也具有高可用,是由很多個 raft協議組實現 tablet 的分片、存儲、查詢是分布式事務和分布式查詢的基礎YugabyteDB Universe 之 YB-Master Servi
7、ceYB master的角色和功能:記錄系統的元數據和記錄表,tablet的位置,角色和權限 調度后臺操作,執行管理操作負載均衡,啟動復制,表DDL 具有高可用,是一個 raft協議組分布式數據庫數據庫存儲分布式數據庫數據庫存儲分布式數據庫數據庫存儲分布式數據庫數據庫查詢分布式數據庫數據庫查詢分布式數據庫數據庫查詢分布式數據庫分布式算法分布式數據庫特殊功能分布式數據庫特殊功能分布式數據庫特殊功能4.分布式數據庫的實踐經驗方向確定與選型測試 從最核心的需求確定分布式數據庫的方向 現有數據庫全部是PG,必須對PG由充分的兼容性,服務可以在PG和分布式數據庫之間切換 必須能夠實現數據強一致性,保證金
8、融業務數據不丟失,不出錯 在性能上必須滿足現有業務和后續業務發展的性能要求 在功能上必須能實現分布式數據庫的高可用,可擴展等功能 在明確目標的情況下,進行充分測試,最后確定選型 找到國內國外所有市面上可用的分布式數據庫 篩選出基本符合要求的 通過詳細測試,對比,最后做出選擇架構方案和設計與選擇分布式數據庫通常有多種部署方式和架構,架構選擇是部署的方向,需要花足夠的時間,考慮和論證足夠的方面可以列出所有可以實現的架構,找出每種架構的優缺點和適用常見可以從具體業務需求出發,反向看一個或多個業務架構組合,可以滿足具體的業務需求將所有的架構都進行了充分的思考和論證后,結合業務需求,列出少量幾種架構,綱
9、舉目張每種架構都是適合場景和使用要求,可以追求,但不要執著完美的架構細節驗證與重點指標細節驗證是對架構方向確定后的部署和具體實現,是架構設計后的后續延伸在實現時要特別注意細節,一個小的參數,或者一行測試數據,就可能對整個方向產生影響分布式數據庫的功能很多,業務場景也很多,需要區分重點指標,比如分布式數據庫的性能指標,獨特功能的驗證需要多驗證一些相對常規的內容,比如YugabyteDB對PG數據庫的兼容性,可以相對快速驗證有時驗證也不是一蹴而就,一次運行就可以得到預期的結果,需要反復思考和推敲,完成驗證過程,最終得到合理的結果逐步上線與遷移細節新技術,新架構的應用,最好先選擇相對重要性較低的服務
10、進行測試和上線,避免新技術對核心業務產生較大影響業務上線應該在聯調環境充分測試,驗證所有方面都符合預期,滿足prod上線要求,才能考慮prod環境上線考慮prod環境線上,要遵循開發環境-聯調環境-演示環境-生產環境的步驟以此上線,每個階段上線,都要留有足夠的時間觀察狀態在遷移之前,先準備好詳細的遷移步驟和注意事項,并在開發和聯調環境遷移時進行確認和補充,保證線上遷移時全部都在預期內一些遷移時的特殊操作,和特殊遷移事項,可以特殊記錄和注意持續迭代與應用實現分布式數據庫是一個還在發展和不斷成熟的技術,它雖然帶來SQL和NoSQL所不具備的特性,但也必然存在一定的逐步成熟的地方不論分布式數據本身的特性,還是應用場景的需求變化,都是一個不論完善,不斷找尋到更優解的過程要以發展的眼光和開放的心態來看待和處理分布式數據庫的現狀和問題,能解決現有問題,也能滿足未來發展需要YugabyteDB 中的 smart driver是一個 客戶端服務發現和負載均衡工具,完善后可以替代現有 LB 的功能分布式數據庫架構,使用,SQL優化等與PG有一些不同的地方,在使用時需要特別注意