中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ShardingSphere的發展歷程是什么

發布時間:2021-12-20 10:12:17 來源:億速云 閱讀:179 作者:柒染 欄目:大數據

今天就跟大家聊聊有關ShardingSphere的發展歷程是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

ShardingSphere的發展歷程:從Sharding-JDBC到Apache頂級項目

說到 ShardingSphere 的起源,我們不得不提 Sharding-JDBC 框架,該框架是一款起源于當當網內部的應用框架,并于 2017 年初正式開源。從 Sharding-JDBC 到 Apache 頂級項目,ShardingSphere 的發展經歷了不同的演進階段。縱觀整個 ShardingSphere 的發展歷史,我們可以得到時間線與階段性里程碑的演進過程圖:

ShardingSphere的發展歷程是什么

ShardingSphere的設計理念:不是顛覆,而是兼容

ShardingSphere 的定位非常明確,就是一種關系型數據庫中間件,而并非一個全新的關系型數據庫。ShardingSphere 認為,在當下,關系型數據庫依然占有巨大市場,但凡涉及數據的持久化,關系型數據庫仍然是系統的標準配置,也是各個公司核心業務的基石,在可預見的未來中,這點很難撼動。所以,ShardingSphere 在當前階段更加關注在原有基礎上進行兼容和擴展,而非顛覆。

ShardingSphere 構建了一個生態圈,這個生態圈由一套開源的分布式數據庫中間件解決方案所構成。按照目前的規劃,ShardingSphere 由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar 這三款相互獨立的產品組成,其中前兩款已經正式發布,而 Sharding-Sidecar 正在規劃中。我們可以從這三款產品出發,分析 ShardingSphere 的設計理念。

Sharding-JDBC

Sharding-JDBC 一開始的設計就完全兼容 JDBC 規范,Sharding-JDBC 對外暴露的一套分片操作接口與 JDBC 規范中所提供的接口完全一致。開發人員只需要了解 JDBC,就可以使用 Sharding-JDBC 來實現分庫分表,Sharding-JDBC 內部屏蔽了所有的分片規則和處理邏輯的復雜性。顯然,這種方案天生就是一種具有高度兼容性的方案,能夠為開發人員提供最簡單、最直接的開發支持。

ShardingSphere的發展歷程是什么

在實際開發過程中,Sharding-JDBC 以 JAR 包的形式提供服務。開發人員可以使用這個 JAR 包直連數據庫,無需額外的部署和依賴管理。在應用 Sharding-JDBC 時,需要注意到 Sharding-JDBC 背后依賴的是一套完整而強大的分片引擎:

ShardingSphere的發展歷程是什么

由于 Sharding-JDBC 提供了一套與 JDBC 規范完全一致的 API,所以它可以很方便地與遵循 JDBC 規范的各種組件和框架進行無縫集成。例如,用于提供數據庫連接的 DBCP、C3P0 等數據庫連接池組件,以及用于提供對象-關系映射的 Hibernate、MyBatis 等 ORM 框架。當然,作為一款支持多數據庫的開源框架,Sharding-JDBC 支持 MySQL、Oracle、SQLServer 等主流關系型數據庫。

Sharding-Proxy

ShardingSphere 中的 Sharding-Proxy 組件定位為一個透明化的數據庫代理端,所以它是代理服務器分片方案的一種具體實現方式。在代理方案的設計和實現上,Sharding-Proxy 同樣充分考慮了兼容性

接下來,我們看一下 Sharding-Proxy 的整體架構。對于應用程序而言,這種代理機制是完全透明的,可以直接把它當作 MySQL 或 PostgreSQL 進行使用:

ShardingSphere的發展歷程是什么

雖然 Sharding-JDBC 和 Sharding-Proxy 具有不同的關注點,但事實上,我們完全可以將它們整合在一起進行使用,也就是說這兩個組件之間也存在兼容性。

ShardingSphere的發展歷程是什么

Sharding-Sidecar

Sidecar 設計模式受到了越來越多的關注和采用,這個模式的目標是把系統中各種異構的服務組件串聯起來,并進行高效的服務治理。ShardingSphere 也基于該模式設計了 Sharding-Sidecar 組件。截止到目前,ShardingSphere 給出了 Sharding-Sidecar 的規劃,但還沒有提供具體的實現方案,這里不做具體展開。作為 Sidecar 模式的具體實現,我們可以想象 Sharding-Sidecar** 的作用就是以 Sidecar 的形式代理所有對數據庫的訪問**。這也是一種兼容性的設計思路,通過無中心、零侵入的方案將分布式的數據訪問應用與數據庫有機串聯起來。

ShardingSphere的核心功能:從數據分片到編排治理

ShardingSphere 的整體功能拆分成四大部分,即基礎設施、分片引擎、分布式事務和治理與集成,這四大部分也構成了本課程介紹 ShardingSphere 的整體行文結構,下面我們來分別進行介紹:

基礎設施

微內核結構

ShardingSphere 在設計上采用了微內核(MicroKernel)架構模式,來確保系統具有高度可擴展性。微內核架構包含兩部分組件,即內核系統和插件。使用微內核架構對系統進行升級,要做的只是用新插件替換舊插件,而不需要改變整個系統架構:

ShardingSphere的發展歷程是什么

在 ShardingSphere 中,抽象了一大批插件接口,包含用實現 SQL 解析的 SQLParserEntry、用于實現配置中心的 ConfigCenter、用于數據脫敏的 ShardingEncryptor,以及用于數據庫治理的注冊中心接口 RegistryCenter 等。開發人員完全可以根據自己的需要,基于這些插件定義來提供定制化實現,并動態加載到 ShardingSphere 運行時環境中。

分布式住建

ShardingSphere 同樣提供了分布式主鍵的實現機制,默認采用的是 SnowFlake(雪花)算法。

分片引擎

對于分片引擎,ShardingSphere同時支持數據分片和讀寫分離機制。

數據分片

數據分片是ShardingSphere的核心功能,常規的,基于垂直拆分和水平拆分的分庫分表操作它都支持。同時,ShardingSphere也預留了分片擴展點,開發人員也可以基于需要實現分片策略的定制化開發。

讀寫分離

在分庫分表的基礎上,ShardingSphere也實現了基于數據庫主從架構的讀寫分離機制。而且,這種讀寫分離機制可以和數據分片完美地進行整合。

分布式事務

分布式事務是分布式環境下確保數據一致性的基本功能,作為分布式數據庫的一種生態圈,ShardingSphere也提供了對分布式事務的全面支持。

標準化事務處理接口

ShardingSphere支持本地事務、基于XA兩階段提交的強一致性事務以及基于BASE的柔性最終一致性事務。同時,ShardingSphere抽象了一組標準化的事務處理接口,并通過分片事務管理器ShardingTransactionManager進行統一管理。我們也可以根據需要實現自己的ShardingTransactionManager從而對分布式事務進行擴展。

強一致性事務與柔性事務

ShardingSphere 內置了一組分布式事務的實現方案,其中強一致性事務內置集成了 Atomikos、Narayana 和 Bitronix 等技術來實現 XA 事務管理器;另一方面,ShardingSphere 內部也整合了 Seata 來提供柔性事務功能。

治理與集成

對于分布式數據庫而言,治理的范疇可以很廣,ShardingSphere 也提供了注冊中心、配置中心等一系列功能來支持數據庫治理。另一方面,ShardingSphere 作為一款支持快速開發的開源框架,也完成了與其他主流框架的無縫集成。

數據脫敏

數據脫敏是確保數據訪問安全的常見需求,通常做法是對原始的SQL進行改寫,從而實現對原文數據進行加密。當我們想要獲取數據時,在實現上就需要通過對數據庫中所存儲的密文數據進行解密才能完成。我們可以根據需要實現一套類似的加解密機制,但ShardingSphere的強大之處在于,它將這套機制內嵌到了SQL的執行過程中,業務開發人員不需要關注具體的加解密實現細節,而只要通過簡單的配置就能實現數據的自動脫敏

配置中心

關于配置信息的管理,我們可以基于 YAML 格式或 XML 格式的配置文件完成配置信息的維護,這在 ShardingSphere 中都得到了支持。更進一步,在 ShardingSphere 中,它還提供了配置信息動態化的管理機制,可以支持數據源、表與分片及讀寫分離策略的動態切換。

注冊中心

ShardingSphere 中的注冊中心提供了基于 Nacos 和 ZooKeeper 的兩種實現方式。而在應用場景上,我們可以基于注冊中心完成數據庫實例管理、數據庫熔斷禁用等治理功能。

鏈路追蹤

SQL 解析與 SQL 執行是數據分片的最核心步驟,ShardingSphere 在完成這兩個步驟的同時,也會將運行時的數據通過標準協議提交到鏈路跟蹤系統。ShardingSphere 使用 OpenTracing API 發送性能追蹤數據。像 SkyWalking、Zipkin 和 Jaeger 等面向 OpenTracing 協議的具體產品都可以和 ShardingSphere 自動完成對接。

系統集成

這里所謂的系統集成,指的是ShardingSphere和Spring系列框架的集成。到目前為止,ShardingSphere實現了兩種系統的集成機制,一種是命名空間機制,即通過擴展Spring Schema來實現與Spring框架的集成;而另一種則是通過編寫自定義的stater組件來完成與Spring Boot的集成。

看完上述內容,你們對ShardingSphere的發展歷程是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 若尔盖县| 高密市| 宜君县| 新绛县| 广德县| 万山特区| 琼结县| 嘉鱼县| 辽阳市| 轮台县| 田阳县| 阿荣旗| 丹巴县| 怀柔区| 南昌市| 巴塘县| 兴和县| 开封县| 罗江县| 张掖市| 武威市| 武山县| 霍林郭勒市| 胶南市| 金沙县| 五指山市| 思南县| 沂源县| 明光市| 枣强县| 锡林浩特市| 邮箱| 延庆县| 德阳市| 钟祥市| 四子王旗| 旬阳县| 茶陵县| 麦盖提县| 兖州市|