Sharding-Sphere 3.X今日瞩目登场如约而至!
點擊上方藍字關注我們
碼農少閑月,五月人倍忙!Sharding-Sphere在經歷公投改名、新官網上線、版權轉移等一系列重大變革后,終于迎來了它的3.X新時代!今日,Sharding-Sphere 3.X在萬眾矚目中如約而至,重裝發布!
明星檔案
從Sharding-JDBC到Sharding-Sphere,老鐵粉陪它一同走過,新朋友也在陸續加入。Sharding-Sphere是什么?做什么?做的如何?三大經典提問幫助新老朋友一同溫故知新。
Sharding-Sphere是什么?
Sharding-Sphere是一套開源的分布式數據庫中間件解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar這3款相互獨立的產品組成。他們均提供標準化的數據分片、讀寫分離、柔性事務和數據治理功能,可適用于如Java同構、異構語言、容器、云原生等各種多樣化的應用場景。
Sharding-Sphere定位為關系型數據庫中間件,旨在充分合理地在分布式的場景下利用關系型數據庫的計算和存儲能力,而并非實現一個全新的關系型數據庫。它與NoSQL和NewSQL是并存而非互斥的關系。NoSQL和NewSQL作為新技術探索的前沿,是非常值得推薦的。而Sharding-Sphere關注未來不變的東西,進而抓住事物本質。關系型數據庫當今依然占有巨大市場,是各個公司核心業務的基石,我們目前階段更加關注在原有基礎上的增量,而非顛覆。其架構如下圖所示:
Sharding-Sphere家族都有誰?
Sharding-JDBC, Sharding-Proxy以及Sharding-Sidecar 共同組成了Sharding-Sphere。他們分別定位、適用于不同的應用場景。您也可以將他們組合使用以得到增益的性能表現。
1. Sharding-JDBC
Sharding-JDBC是Sharding-Sphere的第一個產品,也是Sharding-Sphere的前身。 它定位為輕量級Java框架,在Java的JDBC層提供分庫分表、讀寫分離、數據庫治理、柔性事務等服務。它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
2. Sharding-Proxy
Sharding-Proxy是Sharding-Sphere的第二個產品。 它定位為透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用于完成對異構語言的支持。 Sharding-Proxy屏蔽了底層的分庫分表,您可以像使用一個簡單的數據庫一樣來操作分庫分表的數據。目前提供MySQL版本,它可以使用任何兼容MySQL協議的訪問客戶端(如:MySQL Command Client, MySQL Workbench等)來訪問Sharding-Proxy,進而進行DDL/DML等操作來變更數據,對DBA更加友好。
3. Mixed scheme of Sharding-JDBC & Sharding-Proxy
為了得到更好的性能以及友好的交互體驗,您可以同時使用Sharding-JDBC和Sharding-Proxy。
線上應用使用Sharding-JDBC直連數據庫以獲取最優性能,使用MySQL命令行或UI客戶端連接Sharding-Proxy方便的查詢數據和執行各種DDL語句。它們使用同一個注冊中心集群,通過管理端配置注冊中心中的數據,即可由注冊中心自動將配置變更推送至JDBC和Proxy應用。若數據庫拆分的過多而導致連接數會暴漲,則可以考慮直接在線上使用Sharding-Proxy,以達到有效控制連接數的目的。其架構如下如所示:
4. Sharding-Sidecar
Sharding-Sidecar是Sharding-Sphere的第三個產品,目前仍處在孵化中。 定位為Kubernetes或Mesos的云原生數據庫代理。其核心思想是Database Mesh,即通過無中心、零侵入的方案提供與數據庫交互的嚙合層。關注重點在于如何將分布式的數據訪問應用與數據庫有機串聯起來。
?Sharding-Sphere的功能特性
1. 分庫分表
為解決關系型數據庫面對海量數據由于數據量過大而導致的性能問題,將數據進行分片是行之有效的解決方案,而將集中于單一節點的數據拆分并分別存儲到多個數據庫或表,稱為分庫分表。作為分布式數據庫中間件,我們的目標是透明化分庫分表所帶來的影響,讓使用方盡量像使用一個數據庫一樣使用水平拆分之后的數據庫。
2. 讀寫分離
面對日益增加的系統訪問量,數據庫的吞吐量面臨著巨大瓶頸。 對于同一時間有大量并發讀操作和較少寫操作類型的應用系統來說,將單一的數據庫拆分為主庫和從庫,主庫負責處理事務性的增刪改操作,從庫負責處理查詢操作,能夠有效的避免由數據更新導致的行鎖,使得整個系統的查詢性能得到極大的改善。透明化讀寫分離所帶來的影響,讓使用方盡量像使用一個數據庫一樣使用主從數據庫,是讀寫分離中間件的主要功能。
3. 柔性事務
對于分布式的數據庫來說,強一致性分布式事務在性能方面存在明顯不足。追求最終一致性的柔性事務,在性能和一致性上則顯得更加平衡。 Sharding-Sphere目前支持最大努力送達型柔性事務,未來也將支持TCC柔性事務。若不使用柔性事務,Sharding-Sphere也會自動包含弱XA事務支持。
4. 數據治理
Sharding-Sphere提供注冊中心、配置動態化、數據庫熔斷禁用、調用鏈路等治理能力。
本期看點
相信很多朋友都想知道今天與大家隆重見面的3.X究竟給大家帶來了什么新體驗,下面讓我們一睹為快吧~
Sharding-Sphere 3.X新功能:
Sharding-Proxy MySQL版本上線,支持DML/DDL/DAL/DQL等基本 SQL。屏蔽底層所有分庫分表,可像使用單一MySQL數據庫一樣處理分庫分表數據。
新增對OR SQL語句的支持,例如:select * from t_order where (id>10 and id<20) or status=‘init’;
新增對INSERT批量插入的支持,例如 insert into t_order(order_id, user_id, status) values (1, 2, ‘init’), (2, 3, ‘init’), (3, 4, ‘init’);
優化對INSERT SQL語句的支持,主要包括不指定具體列進行INSERT操作,例如:insert into t_order values(1, 2,‘init’);
增加解析引擎對SQL的緩存,進一步提升解析性能。
Sharding-JDBC新增對InlineExpression占位符$->{}的支持。
新的產品、新的特性、新的優化是不是讓你眼前一亮?那就趕快把Sharding-Sphere 3.X用起來吧!
暖心Tips:
① 使用Sharding-JDBC,可加入以下Maven依賴:
② 使用Sharding-Proxy,可在這里下載:
https://github.com/sharding-sphere/sharding-sphere-doc/raw/master/dist/sharding-proxy-3.0.0.M1.tar.gz
此外,我們的DOCKER下載命令如下所示:
docker pull shardingsphere/sharding-proxy
星路歷程
Sharding-Sphere自2016開源以來,不斷精進、不斷發展,被越來越多的企業和個人認可:在Github上收獲4000+的star,1700+forks,60+的各大公司企業使用它,為Sharding-Sphere提供了重要的成功案例。此外,越來越多的企業伙伴和個人也加入到Sharding-Sphere的開源項目中,為它的成長和發展貢獻了巨大力量。
未來,我們將不斷優化當前的特性,精益求精;同時,大家關注的柔性事務、數據治理等更多新特性也會陸續登場。Sharding-Sidecar也將成為云原生的數據庫中間件!
愿所有有識之士能加入我們,一同描繪Sharding-Sidecar的新未來!
愿正在閱讀的你也能助我們一臂之力,轉載分享文章、加入關注我們!
Sharding-Sphere
Sharding-Sphere是一套開源的分布式數據庫中間件解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar這3款相互獨立的產品組成。他們均提供標準化的數據分片、讀寫分離、柔性事務和數據治理功能,可適用于如Java同構、異構語言、容器、云原生等各種多樣化的應用場景。
亦步亦趨,開源不易,您對我們最大支持,就是在github上留下一個star。
項目地址:
https://github.com/sharding-sphere/sharding-sphere/
https://gitee.com/sharding-sphere/sharding-sphere/
更多信息請瀏覽官網:
http://shardingsphere.io/
或加入Sharding-Sphere官方討論群
? ??
感謝您的支持與關注
我們將不忘初心,不負眾望!
總結
以上是生活随笔為你收集整理的Sharding-Sphere 3.X今日瞩目登场如约而至!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法15_笔试_数字逻辑推理题1
- 下一篇: 【Scala】Scala语言基础(IDE