《【 苗立堯】Apache ShardingSphere:當 Database Plus 遇到云原生.pdf》由會員分享,可在線閱讀,更多相關《【 苗立堯】Apache ShardingSphere:當 Database Plus 遇到云原生.pdf(35頁珍藏版)》請在三個皮匠報告上搜索。
1、A Ap pa ac ch he e S Sh ha ar rd di in ng gS Sp ph he er re e:當當 D Da at ta ab ba as se eP Pl lu us s 遇遇到到云云原原生生苗苗立立堯堯SphereEx 云技術負責人APACHE SHARDINGSPHERE COMMITTERSPHEREEX 云技術負責人主要負責 DBPLUSENGINE 云上解決方案苗苗立立堯堯0 01 1A Ap pa ac ch he eS Sh ha ar rd di in ng gS Sp ph he er re e 簡簡介介數數據據庫庫碎碎片片化化數數據據庫庫碎碎
2、片片化化隨著數字化進程的推進,單一場景無法滿足應用多樣化的需求,數據庫碎片化已呈不可逆的趨勢。在當前,市場占有率最高的商用數據庫 Oracle 并沒有明顯短板的情況下,各種全新的數據庫依舊如雨后春筍般層出不窮。應應用用場場景景的的不不斷斷擴擴張張,加加速速了了數數據據庫庫碎碎片片化化的的進進程程,數數據據庫庫的的架架構構、協協議議、功功能能、適適用用場場景景也也愈愈加加多多樣樣化化:在數據庫架構方面,基于單機系統演進而來的集中式數據庫與原生面向分布式的新一代數據庫并存;在數據庫協議方面,MySQL 和 PostgreSQL 兩大主要開源生態以及周邊服務生態;數數據據庫庫碎碎片片化化數數據據庫庫
3、碎碎片片化化帶帶來來的的問問題題:架構選型困難:單一數據庫無法滿足應用全部需求 技術挑戰眾多:研發成本投入高 運維復雜度高:數據庫生態周邊工具差異大 數據庫間缺乏協作和統管能力:數據仍然存在孤島D Da at ta ab ba as se eP Pl lu us D Da at ta ab ba as se eP Pl lu us s 設設計計理理念念DatabasePlus 是分布式數據庫系統的一種設計理念。用于在關系型數據庫,如 MySQL,PostgreSQL,Oracle,SQLServer,OpenGauss 之上為用戶提供數據分片、數據加解密等增強能力。通過在碎片化數據庫之上搭建使
4、用和交互的標準層和生態層,使得所有應用和數據庫之間的交互面向 Database Plus 構建的標準層,從而屏蔽底層不同數據庫對上層業務的影響和差異。A Ap pa ac ch he e S Sh ha ar rd di in ng gS Sp ph he er re eShardingSphere 是一款開源的數據服務能力增強引擎提供 數據分片、分布式事務、數據安全 等能力。ShardingSphere 遵循 Database Plus 理念旨在構建異構數據庫上層的服務標準和生態S Sh ha ar rd di in ng gS Sp ph he er re e 適適用用場場景景 Shard
5、ingSphere 由 JDBC 和 Proxy 2個接入端組成,既支持獨立部署,也可混合部署 JDBC 和 Proxy 接入端均提供標準化的增量功能,可適用于Java 同構、異構語言 等各種應用場景 ShardingSphere-JDBC 采用無中心化架構,與應用程序共享資源,適用于 Java 開發的高性能的輕量級 OLTP 應用 ShardingSphere-Proxy 提供靜態入口以及異構語言的支持,獨立于應用程序部署。適用于OLAP 應用以及對分片數據庫進行管理和運維 的場景。S Sh ha ar rd di in ng gS Sp ph he er re e 架架構構L L1 1 內
6、內核核層層:面向數據庫內核,包括數據庫事務引擎,查詢優化器等;L L2 2 功功能能層層:ShardingSphere 最核心所在,可定制化開發平臺。具有高定制化、高度內聚、靈活擴展等特點;L L3 3 生生態態層層:通過三個接口分別實現數據庫協議、SQL 方言和數據庫存儲對接,用于打造異構數據網關;0 02 2D Da at ta ab ba as se e P Pl lu us s理理念念和和實實踐踐數數據據庫庫高高可可用用 ShardingSphere 提供了讀寫分離能力,可以配置靜態規則,也可以配置數據庫動態發現 同時支持云下的 MGR、MHA 和云上的 AWS RDS Cluster
7、 ShardingSphere 提供了客戶端發現能力,能夠在主備發生切換的時候主動完成流量路由規則的變更 ShardingSphere 可以簡化應用側的配置,零侵入提供增強能力數數據據脫脫敏敏洗洗數數 不同的行業有著對應的審計要求,比如細粒度的認證授權、操作日志需要脫敏保留、數據傳輸加密、機密數據加密存儲等 ShardingSphere 提供了強悍的數據加密能力,通過邏輯列、密文列、明文列和查詢輔助列的組合,實現業務透明的數據安全 可對接 AWS 上提供了多種安全和合規工具,比如 KMS,CloudHSM 以及 CMK 幫助解決加密相關的問題分分布布式式數數據據庫庫 為解決原有方案的技術瓶頸,
8、降低更換架構帶來的復雜性風險,在不更換原有架構前提下,實現數據庫同步,管理多個異構數據庫集群,線性提升數據存儲容量及并發吞吐。為用戶提供基于數據分片,分布式事務、彈性伸縮的分布式數據庫解決方案,兼具單機交易型數據庫穩定性和分布式數據庫的擴展能力。當當 D Da at ta ab ba as se eP Pl lu us s 遇遇到到云云?云云上上還還是是云云下下?面面向向虛虛機機:易被污染的運行環境冗雜的上線流程通過冗余實現“彈性”有限的虛機環境,有限的計算、有限的存儲開發者關心“全?!泵婷嫦蛳蛟圃疲憾嘧鈶舻摹案蓛簟杯h境即用即銷的計算近乎海量的分層存儲開發者聚焦應用和數據“開發和運維的心智變化
9、”單單機機還還是是分分布布式式?單單機機數數據據庫庫:很快達到瓶頸,可以通過增加硬件配置實現垂直擴展,或增加更多實例水平分庫分表 如何擴展單機數據庫的能力?分分布布式式數數據據庫庫:有門檻,成本高,運維復雜 一站式替換方案,如何下車?通過構建支持任意擴展的可插拔平臺,對現有單機數據庫的能力進行增強,實現成本和性能的平衡提升開開發發者者還還是是 D DB BA A?開發者希望擁有透明的、健壯的基礎設施;開發者希望聲明配置而非參與運維;開發者不關心數據庫到底是不是分布式的;開發者不希望基礎設施變更引起代碼入侵;開發者將注意力聚焦在業務價值上;.DBA 精通各類場景的數據庫選型 DBA 擅長數據庫參
10、數和性能調優 DBA 更熟悉通過 SQL 的方式完成運維操作 云數據庫需要什么樣的 DBA?0 03 3云云原原生生技技術術如如何何幫幫助助 A Ap pa ac ch he eS Sh ha ar rd di in ng gS Sp ph he er re 基基礎礎設設施施即即代代碼碼基礎設施即代碼使用 DevOps 方法,通過一個描述性的模型來定義和部署基礎設施,比如網絡、虛機、負載均衡器等。這樣的模型被寫在文本中,即可像代碼一樣具有版本,并且相同的模型可以多次重復部署,這使得基礎設施即代碼成為 DevOps 中 CICD 的關鍵實踐。S Sh ha ar rd di in ng gS S
11、p ph he er re e 目目前前支支持持:AWS CloudFormationTerraform for AWS Helm CC Cl lo ou ud dF Fo or rmma at ti io on nC Cl lo ou ud dF Fo or rmma at ti io on n S St ta ac ck k T Te emmp pl la at te e:部署架構和依賴通過代碼進行描述利用 VCS 對基礎設施版本化通過配置變更集管理變更通過控制器檢查配置并定期修正以實現聲明式的配置K Ku ub be er rn ne et te es s O Op pe er ra a
12、t to or rO Op pe er ra at to or r P Pa at tt te er rn n:利用 Kubernetes 基礎構件對業務目標進行建模利用 ListWatch 提供反饋機制在不斷的 Reconcile 過程中通過狀態對比進行控制幫助 Kubernetes 成為“平臺上的平臺”ShardingSphere 需要什么樣的 Operator?D Da at ta ab ba as se e R Re el li ia ab bi il li it ty y E En ng gi in ne ee er ri in ng g數數據據庫庫可可靠靠性性工工程程關關注注:流量
13、治理:讀寫分離、分片、負載均衡、限流、熔斷、標簽路由訪問控制:RBAC、表級行級控制安全:加密洗數審計:操作日志可觀測性:Metrics、Logging、Tracing變更管理備份恢復流水線C CR RD D:C Co ommp pu ut te eN No od de eComputeNode 是對計算節點的抽象,代表一組相同配置的 ShardingSphere Proxy,需要聲明的配置有:replicas:副本數storageConnector:后端數據源驅動serverVersion:服務版本portBindings:端口映射關系bootstrap:初始化啟動配置.說說明明:Compu
14、teNode Pod 啟動時需要拉取 MySQL 驅動用戶可以使用 MySQL 客戶端連接 Proxy 執行 DistSQL 進行運維和配置ComputeNode 是否需要 Deployment?C CR RD D:S St to or ra ag ge eN No od de e&S St to or ra ag ge eP Pr ro ov vi id de er rStorageNode 是對存儲節點的抽象,代表一個 RDS 示例或一個 RDS 集群,它的實現依賴于 StorageProvide。類似 StorageClass、IngressClass 和 RuntimeClass,St
15、orageProvider 提供不同數據源的參數聲明,并且被 StorageNode 所消費。StorageNode 代表了一個 ShardingSphere 集群中期望的數據源配置混混沌沌工工程程故障是自然的,它可能發生在任何時間點、任何系統組件以及外部環境。比如:機房光纜故障、服務器內存故障、操作系統內核崩潰、程序 Bug、外部請求壓力過大等?!癛esilience is the ability of a system to adapt itself due to changes,failures,and anomalies”系統韌性是指系統在面對各種故障情況時恢復正常的能力。韌性較差的系
16、統,在面臨故障時無法應對,增加了 MTTR,甚至擴大業務中斷范圍。在系統設計之初,可以采用“Fast Fail”、“面向失敗設計”、“SLO 驅動設計”等理念考慮故障處理邏輯。在系統上線時,可以通過松耦合架構、冗余部署、單元化和故障隔離、彈性擴容、降級回退等方法提高系統韌性。除了技術方法外,在工程文化方面可以采用應急培訓、故障演練等方式優化故障應對過程。問問題題:已已經經上上云云的的系系統統是是否否已已經經具具備備了了足足夠夠的的韌韌性性?如如何何驗驗證證系系統統是是否否有有足足夠夠的的韌韌性性?混混沌沌工工程程C CR RD D:C Ch ha ao os sChaos 圍繞 Shardin
17、gSphere 的各項能力場景構造混沌測試 CRD,如 DistSQL、分片、加密、彈性等,并由 Operator 完成混沌測試的全部過程。目目前前,C Ch ha ao os s 已已支支持持:PodChaos:CPU 壓力、Memory 壓力、Pod Kill、.NetworkChaos:Delay、Loss、Latency、.JVMChaos(soon)、RDSChaos(soon)、生生態態擴擴展展ShardingSphere 的一大特性為可插拔,支持以 Java 的方式實現 SPI 進行擴展:ShardingSphere 可插拔架構提供了數十個基于 SPI 的擴展點,開發者可以十分方
18、便的對功能進行定制化擴展;按照擴展點是基于技術還是基于功能實現,可以將擴展點劃分為功能擴展點和技術擴展點?;跀U展點,ShardingSphere 默認實現了數據分片、讀寫分離、數據加密、影子庫壓測、高可用、數據脫敏等功能;生生態態擴擴展展除了 SPI 外,社區還貢獻了基于 WebAssembly 的擴展 Demo,分別是:利用 Wasm 實現自定義分片算法利用 Wasm 擴展自定義分片表達式案案例例1 1:某某海海淘淘網網站站案例簡述:業務挑戰:安全合規,需要對個人信息加密改造解決方案:ShardingSphere,應用系統免改造技術選型:外部系統調用方案、SQL 層處理方案上線過程建議:測試,回滾,日志&監控 用戶收益:系統免改造,安全可回退案案例例2 2:某某電電商商網網站站案例簡述:業務挑戰:單表過大,存在性能瓶頸,同時存儲即將達到上限解決方案:ShardingSphere,滿足多維度技術選型標準自定義算法:基因注入分片算法上線過程:遷移&雙寫用戶收益:性能提升,節省精力,安全穩定加加入入社社區區A Ap pa ac ch he e S Sh ha ar rd di in ng gS Sp ph he er re e微微信信公公眾眾號號S Sp ph he er re eE Ex x微微信信公公眾眾號號T TH HA AN NK KS S