你們好,我今天想跟你們分享的是Sharding-Sphere的第二個產品Sharding-Proxy。前端
在上個月亮相的Sharding-Sphere 3.0.0.M1中首次發佈了Sharding-Proxy,但願此次分享可以經過幾個優化實踐,幫助你們管中窺豹,從幾個關鍵細節想象出Sharding-Proxy的全貌。至於更詳細的MySQL協議、IO模型、Netty等議題,之後有機會再和你們專題分享。數據庫
1、Sharding-Proxy簡介後端
1Sharding-Proxy概覽架構
Sharding-Proxy定位爲透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。目前先提供MySQL版本,它能夠使用任何兼容MySQL協議的訪問客戶端操做數據(如:MySQLCommandClient、MySQLWorkbench等),對DBA更加友好。框架
對應用程序徹底透明,可直接當作MySQL使用;ide
適用於任何兼容MySQL協議的客戶端。優化
與其餘兩個產品(Sharding-JDBC、Sharding-Sidecar)的對比:3d
它們既能夠獨立使用,也能夠相互配合,以不一樣的架構模型、不一樣的切入點,實現相同的功能目標。而其核心功能,如數據分片、讀寫分離、柔性事務等,都是同一套實現代碼。代理
舉個例子,對於僅使用Java爲開發技術棧的場景,Sharding-JDBC對各類Java的ORM框架支持度很是高,開發人員能夠很是便利地將數據分片能力引入到現有的系統中,並將其部署至線上環境運行,而DBA就能夠經過部署一個Sharding-Proxy實例,對數據進行查詢和管理。blog
2Sharding-Proxy架構
整個架構能夠分爲前端、後端和核心組件三部分來看: