日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

最近學習了阿里資深技術專家李運華的架構設計關于讀寫分離的教程,頗有收獲,總結一下。

1 讀寫分離概述

淺談讀寫分離和幾種常見的開源數據庫中間件

 

基本架構圖:

淺談讀寫分離和幾種常見的開源數據庫中間件

 

2 適用場景

淺談讀寫分離和幾種常見的開源數據庫中間件

 

讀寫分離不是銀彈,并不是一有性能問題就上讀寫分離,而是應該先優化,例如優化慢查詢,調整不合理的業務邏輯,引入緩存查詢等只有確定系統沒有優化空間后才考慮讀寫分離集群。

3 引入的系統復雜度問題

問題一 主從復制延遲

淺談讀寫分離和幾種常見的開源數據庫中間件

 

問題二 分配機制

如何將讀寫操作區分開來,然后訪問不同的數據庫服務器?

解決方案1 客戶端程序代碼封裝實現

基本架構圖

淺談讀寫分離和幾種常見的開源數據庫中間件

 


淺談讀寫分離和幾種常見的開源數據庫中間件

 

業界開源實現

  • Sharding-JDBC定位為輕量級JAVA框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
淺談讀寫分離和幾種常見的開源數據庫中間件

 

  • 淘寶TDDL淘寶根據自身業務需求研發了 TDDL ( Taobao Distributed Data Layer )框架,主要用于解決 分庫分表場景下的訪問路由(持久層與數據訪問層的配合)以及異構數據庫之間的數據同步 ,它是一個基于集中式配置的 JDBC DataSource 實現,具有分庫分表、 Master/Salve 、動態數據源配置等功能。
淺談讀寫分離和幾種常見的開源數據庫中間件

 

解決方案2 服務端中間件封裝

基本架構圖

淺談讀寫分離和幾種常見的開源數據庫中間件

 


淺談讀寫分離和幾種常見的開源數據庫中間件

 

業界開源實現

  • MySQL官方推薦的MySQL Router
淺談讀寫分離和幾種常見的開源數據庫中間件

 

MySQL Router是輕量級的中間件,可在應用程序和任何后端MySQL服務器之間提供透明路由。它可以用于各種各樣的用例,例如通過有效地將數據庫流量路由到適當的后端MySQL服務器來提供高可用性和可伸縮性。可插拔架構還使開發人員能夠擴展MySQL Router以用于自定義用例。

基于MySQL Router可以實現讀寫分離,故障自動切換,負載均衡,連接池等功能。

  • MySQL官方提供的MySQL Proxy
淺談讀寫分離和幾種常見的開源數據庫中間件

 

  • 360開源的Atlas
淺談讀寫分離和幾種常見的開源數據庫中間件

 


淺談讀寫分離和幾種常見的開源數據庫中間件

 

Atlas是由平臺部基礎架構團隊開發維護的一個基于MySQL協議的數據中間層項目。它是在mysql-proxy的基礎上,對其進行了優化,增加了一些新的功能特性。

常見的開源數據庫中間件對比:

功能

Sharding-JDBC

TDDL

Amoeba

Cobar

MyCat

基于客戶端還是服務端

客戶端

客戶端

服務端

服務端

服務端

分庫分表

MySQL交互協議

JDBC Driver

JDBC Driver

前端用NIO,后端用JDBC Driver

前端用NIO,后端用BIO

前后端均用NIO

支持的數據庫

任意

任意

任意

MySQL

任意

 

  • TDDL 不同于其它幾款產品,并非獨立的中間件,只能算作中間層,是以 Jar 包方式提供給應用調用。屬于JDBC Shard 的思想,網上也有很多其它類似產品。
  • Amoeba 是作為一個真正的獨立中間件提供服務,即應用去連接 Amoeba 操作 MySQL 集群,就像操作單個 MySQL 一樣。從架構中可以看來,Amoeba 算中間件中的早期產品,后端還在使用 JDBC Driver。

 

  • Cobar 是在 Amoeba 基礎上進化的版本,一個顯著變化是把后端 JDBC Driver 改為原生的 MySQL 通信協議層。后端去掉 JDBC Driver 后,意味著不再支持 JDBC 規范,不能支持 Oracle、PostgreSQL 等數據。但使 用原生通信協議代替 JDBC Driver,后端的功能增加了很多想象力,比如主備切換、讀寫分離、異步操作等。

 

  • MyCat 又是在 Cobar 基礎上發展的版本,兩個顯著點是:
    (1)后端由 BIO 改為 NIO,并發量有大幅提高;(2)增加了對Order By、Group By、limit 等聚合功能的支持(雖然 Cobar 也可以支持 Order By、Group By、Limit 語法,但是結果沒有進行聚合,只是簡單返回給前端,聚合功能還是需要業務系統自己完成)。

分享到:
標簽:中間件 數據庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定