官术网_书友最值得收藏!

1.4.3 可插拔

在ShardingSphere的整個發展過程中,通過逐步添加新功能的方式對其進行了擴展。為了避免陡峭的學習曲線嚇退新的用戶和開發人員,導致他們不敢在數據庫環境中集成ShardingSphere,ShardingSphere采用了可插拔架構。

ShardingSphere的核心價值不在于它能訪問多少數據庫、提供多少功能,而在于它的可插拔架構,這種架構的可擴展性極強,對開發人員非常友好。開發人員可在不修改源代碼的情況下,給ShardingSphere添加定制的功能。

ShardingSphere的可插拔架構由微內核和3層可插拔模塊組成。ShardingSphere架構之上是頂層API,因此內核根本不知道各種功能的存在。對于不需要的功能,只需將相關的依賴刪除即可,而這不會給系統帶來任何影響。圖1.3展示了ShardingSphere的內部結構。

可以看到,3層之間是彼此完全獨立的。面向插件的設計意味著內核和功能模塊提供了全面的可擴展性支持,讓你在構建ShardingSphere實例時,即便將某些功能模塊刪除(即選擇不安裝它們),也不會影響總體的使用體驗。

1.可供選擇的架構

數據庫中間件需要提供兩方面的支持:訪問數據庫的驅動程序和獨立的代理。考慮到任何架構適配器都存在缺陷,ShardingSphere選擇開發多個適配器。

ShardingSphere-JDBC和ShardingSphere-Proxy是兩款獨立的產品,但你可選擇采用混合模式(混合部署),即同時部署它們。這兩款產品都提供了數十個增強功能,它們將數據庫視為存儲節點,適用于Java同構、異構語言、云原生等場景。

圖1.3 ShardingSphere的內部結構

2.ShardingSphere-JDBC

ShardingSphere-JDBC是ShardingSphere的前身,它是ShardingSphere生態圈的第一款產品,是一個輕量級Java框架,在Java數據庫互連(Java database connectivity,JDBC)層提供額外的服務。ShardingSphere-JDBC提供了極大的靈活性。[1]

它適用于所有基于JDBC的對象關系映射(object relational mapping,ORM)框架,如JPA、Hibernate、MyBatis和Spring JDBC Template,我們還可直接將它與JDBC結合起來使用。

它支持所有的第三方數據庫連接池,如DBCP、C3P0、BoneCP和HikariCP。

它支持所有遵循JDBC標準的數據庫,當前ShardingSphere-JDBC支持MySQL、PostgreSQL、Oracle、SQL Server和其他所有支持JDBC接入的數據庫。


[1]TTL為存活時間(time to live)的縮寫。

上述的數據庫和ORM框架中可能很多都是你耳熟能詳的,那么ShardingSphere-Proxy又提供了哪些支持呢?下面來簡要介紹一下。

3.ShardingSphere-Proxy

ShardingSphere-Proxy是ShardingSphere生態圈的第二款產品。作為透明的數據庫代理,它提供了一個數據庫服務器,其中封裝了數據庫二進制協議,因此它支持異構語言。這個數據庫代理具有如下特征:

對應用來說是透明的,因此可直接用作MySQL/PostgreSQL;

支持所有與MySQL/PostgreSQL協議兼容的客戶端。

圖1.4是ShardingSphere-Proxy的典型系統的拓撲結構,展示了ShardingSphere-Proxy所處的位置。

圖1.4 ShardingSphere-Proxy的典型系統的拓撲結構

可以看到,ShardingSphere-Proxy是非侵入性的,很容易將其添加到系統中,這提供了極大的靈活性。[2]

你可能會問,這兩個適配器有什么不同?下面簡單比較它們。有關這兩款產品的更深入的對比,請參閱第5章。


[2]CLI為命令行界面(command line interface)的縮寫。

4.ShardingSphere-JDBC與ShardingSphere-Proxy比較

在簡單的數據庫中間件項目中,不同的接入端意味著不同的部署結構,但ShardingSphere是個例外,它支持大量的功能。因此,隨著大數據計算和資源需求的日益增長,不同的部署結構有不同的資源分配方案。

ShardingSphere-Proxy有一個可獨立部署的分布式計算模塊,適用于執行多維數據計算的應用(這些應用對延遲不那么敏感,但需要使用較多的計算資源)。有關ShardingSphere-JDBC和ShardingSphere-Proxy的更深入的對比,請參閱第5章或ShardingSphere官網文檔。

5.混合部署

ShardingSphere-JDBC采用非集中式架構,適用于基于Java的輕量級、高性能OLTP應用,而ShardingSphere-Proxy提供了靜態入口和異構語言支持,適用于聯機分析處理(online analytical processing,OLAP)應用,還適用于管理和操作分片數據庫。

因此,ShardingSphere生態圈提供了多個端點。我們通過混合部署ShardingSphere-JDBC和ShardingSphere-Proxy,并采用相同的分片策略,可以打造出適合多個應用場景的系統。圖1.5簡要展示了ShardingSphere混合部署(同時部署ShardingSphere-JDBC和ShardingSphere-Proxy)的拓撲結構。

通過像圖1.5那樣同時部署ShardingSphere-JDBC和ShardingSphere-Proxy,可獲得混合計算功能,這讓你能夠調整系統架構,使其更貼合需求。

圖1.5 ShardingSphere混合部署的拓撲結構

主站蜘蛛池模板: 威海市| 普定县| 康乐县| 河西区| 长阳| 镇平县| 济阳县| 永吉县| 太湖县| 来凤县| 大石桥市| 澎湖县| 舞钢市| 马公市| 荥阳市| 通州区| 济源市| 禄劝| 建德市| 广河县| 沁源县| 霍山县| 凌云县| 蒲城县| 平邑县| 白朗县| 阿鲁科尔沁旗| 罗城| 句容市| 田林县| 和平县| 盐边县| 台南县| 台南市| 贵州省| 丹寨县| 潼南县| 忻城县| 平顶山市| 昌平区| 固原市|