新版釋出|ShardingSphere 5.0.0-beta 來了!

SphereEx發表於2021-06-22
Apache ShardingSphere 5.0.0-beta 版在經過長達半年的籌備後,終於將在近期正式 Release! 本文將帶領大家一同預覽新版本即將帶來哪些重大亮點功能。


作者介紹

潘娟 | Trist a

SphereEx 聯合創始人


SphereEx co-founder, Apache member, Apache ShardingSphere PMC, Apache brpc(Incubating) mentor, 本次 Release manager。

前京東科技高階 DBA,曾負責京東數科資料庫智慧平臺的設計與研發,現專注於分散式資料庫 & 中介軟體生態及開源領域。被評為《2020 中國開源先鋒人物》,多次受邀參加資料庫 & 架構領域的相關會議分享。



作為 Apache 的頂級專案,ShardingSphere 的 Release 要經過社群驗證、投票、釋出等環節,保證推出的版本符合 License 及 Apache Release 規範,且功能及專案層面儘可能符合預期,這是對專案本身及使用者的保護。 當前版本已完成基本構建, 預計本週內正式發行。


本次 Release 將會帶來以下重要特性:

1. 亮點功能

全新定義的分散式資料庫操作語言—DistSQL

SQL 是一種用於存取資料以及查詢、更新和管理關聯式資料庫系統的資料庫查詢和程式設計語言。1986 年 10 月,美國國家標準學會將 SQL 作為關係式資料庫管理系統的標準語言。現有通用資料庫系統在其實踐過程中都對 SQL 規範作了部分改寫和擴充,具有更高靈活性和更豐富的功能,使其適用於自身的資料庫系統。

DistSQL(Distributed SQL)是 Apache ShardingSphere 提出的,特有的一種內建 SQL 語言,能夠提供標準 SQL 之外的增量功能操作能力。DistSQL 讓使用者可以像運算元據庫一樣操作 ShardingSphere,使其從面向開發人員的框架和中介軟體轉變為面向運維人員的基礎設施產品。

在 ShardingSphere 中, DistSQL 目前主要劃分為 RDL、RQL 和 SCTL 三種具體型別:

  • RDL(Resource & Rule Definition Language): 資源和規則的建立、修改和刪除;

  • RQL(Resource & Rule Query Language): 資源和規則的查詢和展現;

  • SCTL(ShardingSphere Control Language): Hint、事務型別切換、分片執行計劃查詢等增量功能操作。


ShardingSphere 推出 Database Plus 理念,為傳統資料庫賦能,構建具備分散式、高安全、可管控等的資料庫增強生態,打造兼具資料庫且貼合實際業務需求的開源分散式資料庫體系。 與該分散式資料庫體系搭配使用的分散式 SQL(Distributed SQL)將傳統透過配置檔案驅動的分散式資料庫代理端 ShardingSphere-Proxy,變成真正意義上透過 SQL 驅動的“分散式資料庫”。

在 5.0.0-beta 版本中,使用者可一鍵啟動 ShardingSphere-Proxy,並透過 DistSQL 線上動態建立、修改、刪除分散式資料庫表,加密資料庫表,動態注入資料庫例項資源,建立主從輪詢規則,展示全域性配置資訊,開啟分散式事務,啟動動態遷移分散式庫表作業等功能。

DistSQL 這種 資料庫態產品,讓使用者用最規範、標準、熟悉的查詢方式操縱及管理 ShardingSphere 分散式資料庫生態所有資料庫資源及後設資料資訊。 未來我們將透過 DistSQL 打破中介軟體和資料庫之間的界限,讓開發者真正像使用資料庫一樣原生的使用 ShardingSphere。

全面對接 PostgreSQL 生態

PostgreSQL 是世界領先的開源資料庫,被業界稱為最強大的企業級開源資料庫。PostgreSQL 目前世界排名第四,且於 2017、2018 連續兩年贏得了“年度資料庫”冠軍稱號。

ShardingSphere-JDBC 和 ShardingSphere-Proxy 共同構成 ShardingSphere 的接入端體系。ShardingSphere-Proxy 又包括 MySQL 和 PostgreSQL 兩個協議版本。在 MySQL 協議日益成熟及廣泛採用的同時,ShardingSphere 團隊開始將注意力放在 PostgreSQL 協議。 本次發行的版本,特別針對 PostgreSQL 在其 SQL 解析層、SQL 相容層、協議接入層、許可權控制層進行大規模開發及提升。作為本次釋出的主打產品,提升後的 ShardingSphere-Proxy PostgreSQL 版本將真正踏上聯動 PostgreSQL 開源生態之路,並在未來將有更多持續提升。

PostgreSQL 作為開源界的明星資料庫產品,ShardingSphere 與 PostgreSQL 的連結,將為考慮將 PostgreSQL 分散式化、水平擴充化、安全加密化、細粒度許可權控制化的使用者提供更為完善和持續維護的解決方案。

ShardingSphere 可插拔架構

可插拔架構追求各個模組的相互獨立和互無感知,並且透過一個高靈活度,可插拔和可擴充套件核心,以疊加的方式將各種功能組合使用。

在 ShardingSphere 中,很多功能實現類的載入方式是透過 SPI(Service Provider Interface)注入的方式完成的。SPI 是一種為了被第三方實現或擴充套件的 API,它可以用於實現框架擴充套件或元件替換。

目前,資料分片、讀寫分離、資料加密、影子庫、資料庫發現等功能,以及對 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協議的支援,均可透過外掛的方式植入 ShardingSphere 中。ShardingSphere 現已提供數十個 SPI 作為系統的擴充套件點,而且仍在不斷增加中。 可插拔架構的完善,使 ShardingSphere 從分庫分表中介軟體蛻變成為分散式資料庫的生態系統。

ShardingSphere 可插拔與可擴充架構理念,為使用者提供如積木一樣組合式的自定義資料庫解決方案,例如讓傳統關係型資料庫同時具有水平擴充套件和資料加密的功能,或單獨打造分散式資料庫解決方案。

2. 新

全新開放式可觀測能力

為了有效分離可觀測性與主線功能, ShardingSphere 提供了自動化探針,用於方便使用者定製化擴充套件呼叫鏈路追蹤(tracing)、效能度量指標(metrics)和日誌(log)的埋點。ShardingSphere 內建實現了基於 Opentracing、Jaegar 和 Zipkin 的 tracing 探針和基於 Prometheus 的 metrics 探針,並且提供了預設的日誌實現。

3.增強

增強的分散式查詢能力

跨資料庫例項節點進行 Join 及子查詢一直是令人頭疼的問題。同時使用多資料庫例項,使得業務層面的功能受到資料庫限制,業務研發人員需時刻注意查詢 SQL 的使用範疇。

本次釋出的版本實現了增強的分散式查詢的功能,在支援跨資料庫例項進行 Join 及子查詢的同時,透過在 SQL 解析、路由及執行層面的增強及 bug 修復, 對 MySQL/PostgreSQL/Oracle/SQLServer 在分散式場景下的 SQL 相容度實現了大幅度提升。這使得使用者在原有的資料庫例項叢集基礎上,透過引入 ShardingSphere,低風險、高效率、零改造地實現從傳統資料庫叢集向分散式水平擴充套件的資料庫叢集進行平滑過渡。

目前增強分散式查詢能力仍處於 PoC 階段,效能方面還有較大提升空間,歡迎社群的朋友們一起參與開發。

增強分散式使用者及許可權控制

使用者安全及許可權控制是資料庫領域較為關注且非常重要的功能之一。在先前 5.0.0-alpha 版本中,ShardingSphere 提供了簡單使用者密碼配置、庫級別的粗粒度許可權控制,而在此次即將發行的 beta 版則進一步將該特性進行升級改造。從只能透過配置檔案進行使用者和密碼配置,到現在的標準化 SQL 方式進行分散式使用者名稱、hostname、密碼的線上修改和管理。此外, 從原來粗粒度的庫級別許可權控制,升級到針對庫、表級別的許可權控制。

無論業務場景下使用的是 MySQL 還是 PostgreSQL(未來將支援 openGauss),都可使用原生的資料庫 SQL 方言,在 ShardingSphere 的分散式體系下,進行使用者名稱、hostname、密碼、庫、表等自由組合許可權控制管理。 ShardingSphere-Proxy 的代理端接入方式,讓使用者儘可能無縫遷移原有的資料庫許可權及使用者體系。

在未來的版本中,ShardingSphere 將提供針對列、檢視層面的許可權控制,甚至針對每一行的資料都可進行許可權的約束。而針對三方業務系統或使用者特有的安全系統,ShardingSphere 提供與這些系統打通能力,使 ShardingSphere-Proxy 可以連通第三方安全管控體系的同時,提供最標準的資料庫許可權管理模式。

目前許可權模組處於開發階段,下個版本將會呈現更加完善的功能。

API 簡化重構能力

ShardingSphere 的可插拔架構為使用者提供豐富的擴充套件能力,同時為方便使用也內建常用功能。例如分庫分表的分片策略,就預置了雜湊分片、時間範圍分片、取模分片等策略;資料安全領域的資料儲存加密,則預置有 AES 、RC4、MD5 加密等策略。同時 為進一步簡化操作,透過新增的強大 DistSQL 能力,使用者只需一條 SQL 即可線上動態建立一張分片或加密表。

除預置常用功能外,為滿足更為複雜使用場景,ShardingSphere 也開放相關演算法與策略介面,讓使用者可按照自己實際的業務場景,注入更為複雜功能實現。簡單內建與自主開放的並存策略,一直是 ShardingSphere 的架構設計哲學。

4. 其他功能

效能提升:後設資料載入最佳化

由於 ShardingSphere 要幫助使用者遮蔽及管理所有資料庫例項及後設資料資訊,故在應用啟動時,會出現長時間載入後設資料資訊的效能問題,特別是在上千臺伺服器例項情況下,後設資料載入慢的問題更為明顯。本次發行的版本,特別針對社群呼聲較高的後設資料載入問題進行多次效能調優和架構調整。 取代原生的 JDBC 驅動載入方式,改為針對不同資料庫方言,進行並行化的 SQL 查詢方式一次性取出所有後設資料資訊,從而大幅度提升啟動效能。

使用便捷:新增內建效能測試體系

ShardingSphere 在功能不斷完善、新功能不斷開發的程式中,一直欠缺一套完善、全面的整合 & 效能測試體系,在保證每次提交都能正常編譯的同時,不影響其他模組,並能觀測到效能的上升及下降趨勢。此外,針對資料分片、資料加密、讀寫分離、分散式管控、許可權控制、SQL 支援度等功能進行整合測試保證;對不同資料庫、不同分片或加密策略、不同版本之間的效能進行監控和調優提供基礎保證。

配合本次 beta 版本釋出,相關效能測試報表、曲線變化展示也將陸續為社群開發,方便使用者瞭解 ShardingSphere 的效能變化。此外整套測試體系原始碼也將提供給社群,方便使用者自行部署測試,感謝 SphereEx(sphere-ex.com) 公司為社群貢獻整套的效能測試體系。

除了上述列舉的功能外,本次釋出還進行了其他方面的功能增強、效能最佳化、缺陷修復等處理。在後續的系列文章中,我們將會持續為大家帶來 Apache ShardingSphere 5.0.0-beta 的正式釋出報導、各個特性及功能的深度技術文章,歡迎鎖定我們的系列更新!


? ShardingSphere GitHub 地址:

  • 在使用 ShardingSphere 的過程中,如果您發現任何問題,有新的想法、建議,歡迎點選“ ”透過 Apache 郵件列表參與到 ShardingSphere 的社群建設中。


歡迎掃碼關注我們


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70001955/viewspace-2777779/,如需轉載,請註明出處,否則將追究法律責任。

相關文章