Apache ShardingSphere:由開源驅動的分散式資料庫中介軟體生態

SphereEx發表於2021-08-02

2021 年 7 月 21 日 2021 亞馬遜雲科技中國峰會現場,SphereEx 聯合創始人、Apache ShardingSphere PMC 潘娟受邀參與此次峰會, 以《Apache ShardingSphere 分散式資料庫中介軟體開源生態構建》為主題,圍繞開源理念擴散、社群建設、ShardingSphere 如何踐行 Apache Way 等方面展開了介紹, 本文總結自潘娟內容分享。



0
在資料庫之上與業務之下的新生態

一層貼近應用,一層貼近 DataBase。

不同的行業、不同的使用者、不同的定位、不同的需求....如今的資料庫面臨著比過去更加複雜的資料應用場景以及愈發個性化和定製化的資料處理需求。愈發苛刻的生產環境,也在推動著不同的資料庫不斷將資料讀寫速度、延時、吞吐量等效能指標發揮到極致。

久而久之,分工明確的資料應用場景逐漸導致了資料庫市場的碎片化,且難以出現一款能夠完美適配所有場景的資料庫。在不同的業務場景下選擇不同的資料庫,已經成為一種常見的企業選型方法。

但同樣,這種百花齊放的資料庫形態,也會帶來『百花齊放』的問題。但從宏觀的角度來看,這些問題之間是存在共性的,是可以被抽離出來並形成一套事實標準的。 如果能夠在這些百花齊放的資料庫之上構建能夠統一應用管理資料的平臺層,就可以在遮蔽底層資料庫差異的前提下,按照固定標準來進行開發,這種標準化解決方案將會極大縮減使用者管理基礎資料設施的壓力和學習成本。

Apache ShardingSphere 就是位於這一層,透過複用原有資料庫的能力,能夠幫助技術團隊在此之上實現如分片、加密解密等增量能力的開發,且 向下不需考慮底層資料庫的配置,向上又能夠遮蔽使用者感知,從而快速構建起面向業務的資料庫直連能力,輕鬆管理大規模的資料叢集。


02
如何踐行 Apache Way

Sharding

ShardingSphere 可同時疊加使用多個功能來滿足使用者的多樣化需求。

隨著業務體量的增大,單體資料庫難以支撐大體量業務時,就有必要對資料庫進行橫向擴充套件,這就必然要面臨著分散式管理的問題。ShardingSphere 透過在資料庫之上構建一層熱插拔功能層,並提供傳統資料庫的操作模式,遮蔽使用者對底層資料庫變化的感知,賦予開發者使用單體資料庫的方式來管理大規模資料庫叢集的能力。其中,ShardingSphere 主要包含以下四種應用場景:

  • Sharding 策略

業務體量增大時,所面臨的資料分片壓力就會隨之增加,所對應的分片策略相應就會被設計的更加複雜。ShardingSphere 能夠以靈活、易擴充套件的方式,以最低成本協助使用者在原本水平擴充套件之外做更多的分片策略,同時也支援自定義擴充套件的能力。

  • 讀寫分離

通常情況下實現主從部署能夠有效緩解資料庫的壓力,但如果某一個叢集下的機器或庫表出現問題,無法進行正常讀寫操作,就會對業務造成比較大的影響。為避免業務不可用,通常需要開發者重新寫一套高可用的策略來實現讀寫庫表的主從切換。ShardingSphere 可以自動探索所有叢集的狀態,在第一時間發現請求不可靠、底層資料庫發生主從切換等問題,並可以在表層使用者沒有產生感知的前提下自動恢復主從狀態。

  • Sharding Scaling

隨著業務的增長,可能會需要對此前拆分過的資料叢集進行再一次拆分。ShardingSphere 配套的 Scaling 元件,只需一條 SQL 命令就可以啟動任務,並在後臺實時展示執行狀態。透過 Scaling 這種『管道』,使舊的資料庫生態和新的資料庫生態重新連線起來。

  • 資料加解密

在資料庫的應用中,對於關鍵資料的加解密也是非常重要的一部分。如果原有系統監控能力不達標,部分敏感資料可能是以明文的狀態儲存的,後期需要對其進行加密處理,這是許多團隊普遍存在的問題。 ShardingSphere 透過對這部分能力進行標準化並整合在中介軟體生態上,自動化使用者對新、舊業務的資料脫敏以及加解密的過程,整個過程實現了使用者層面的無感知。同時支援多種內建的資料加解密/脫敏演算法,使用者也可根據自身情況來自定義擴充套件相應的資料演算法。

構造資料的接入神經:可插拔的 Database Plus 平臺

面對各種各樣的需求以及使用場景,ShardingSphere 為不同領域的開發者提供了面向 Java 的 JDBC、面向異構的代理端以及面向上雲的 Sidecar 端這三種接入形式,使用者可以按具體需求來做選型,在原有叢集之上來做分片、讀寫分離、資料遷移等相關操作。

  • JDBC 接入:完全以 JDBC 的方式去使用,可以理解為一款增強的 JDBC 驅動程式,完全相容 JDBC 和各種 ORM 框架,不需額外的部署和依賴即能夠實現分散式管理、水平擴充、脫敏等一系列操作;

  • Proxy 接入:以模擬資料庫服務的形式,透過 Proxy 來管理底層真實的資料庫叢集,基本無需對業務進行改造;

  • 雲上 mesh 接入:為 ShardingSphere 提供公有云上的部署形式。 在雲上,目前 SphereEx 已經加入了亞馬遜雲科技的雲創計劃,後續會在中國區和海外陸續在 Marketplace 與亞馬遜雲科技展開深度合作,為亞馬遜雲科技上的使用者提供更加強大的 Proxy 映象部署能力,共同為企業應用打造更加成熟的雲上環境。


03
開源,讓個人工作連線到世界

ShardingSphere 從開源至今,已經在業內產生了相當的影響力,目前國內只要涉及到水平擴充套件方面的工具或能力時,通常 ShardingSphere 都會出現在候選名單中。這一點當然有專案維護團隊成年累月的貢獻,使 ShardingSphere 的功能愈發完善,另一方面也歸功於國內日益向上的開源氛圍。

過去幾年在開源社群上,國內使用者大多是扮演程式下載和程式碼引用的角色,在社群建設方面卻少有涉及。最近幾年隨著開源理念在國內的推廣,開始湧現出越來越多抱有很強技術情懷的同學,正是有這些同學的加入,才能讓 ShardingSphere 的社群越來越活躍。 因為對於一個好的開源專案而言,評判標準並非只是其理念超前、技術先進等,更多是在技術影響力、開源影響力、生態建設、開發者群體等多方面所積攢的深厚基礎。

這也是為什麼 ShardingSphere 作為一款 Apache 頂級開源專案,依然在積極號召大家參與到開源社群中來。畢竟大家每天接觸到的只是身邊這群人,所做的工作也只是辦公室裡的這些事,每天被『侷限』在這個圈子中。而透過開源,則可以讓自己的工作連線到世界,讓自己能夠拋開書本真正投入到專案中來,開啟視野,逐漸培養開放、合作的精神,重新發現自己當下所產生的價值。


歡迎掃碼關注公眾號


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

相關文章