亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

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

最近學(xué)習(xí)了阿里資深技術(shù)專家李運華的架構(gòu)設(shè)計關(guān)于讀寫分離的教程,頗有收獲,總結(jié)一下。

1 讀寫分離概述

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

 

基本架構(gòu)圖:

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

 

2 適用場景

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

 

讀寫分離不是銀彈,并不是一有性能問題就上讀寫分離,而是應(yīng)該先優(yōu)化,例如優(yōu)化慢查詢,調(diào)整不合理的業(yè)務(wù)邏輯,引入緩存查詢等只有確定系統(tǒng)沒有優(yōu)化空間后才考慮讀寫分離集群。

3 引入的系統(tǒng)復(fù)雜度問題

問題一 主從復(fù)制延遲

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

 

問題二 分配機制

如何將讀寫操作區(qū)分開來,然后訪問不同的數(shù)據(jù)庫服務(wù)器?

解決方案1 客戶端程序代碼封裝實現(xiàn)

基本架構(gòu)圖

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

 


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

 

業(yè)界開源實現(xiàn)

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

 

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

 

解決方案2 服務(wù)端中間件封裝

基本架構(gòu)圖

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

 


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

 

業(yè)界開源實現(xiàn)

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

 

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

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

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

 

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

 


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

 

Atlas是由平臺部基礎(chǔ)架構(gòu)團隊開發(fā)維護的一個基于MySQL協(xié)議的數(shù)據(jù)中間層項目。它是在mysql-proxy的基礎(chǔ)上,對其進行了優(yōu)化,增加了一些新的功能特性。

常見的開源數(shù)據(jù)庫中間件對比:

功能

Sharding-JDBC

TDDL

Amoeba

Cobar

MyCat

基于客戶端還是服務(wù)端

客戶端

客戶端

服務(wù)端

服務(wù)端

服務(wù)端

分庫分表

MySQL交互協(xié)議

JDBC Driver

JDBC Driver

前端用NIO,后端用JDBC Driver

前端用NIO,后端用BIO

前后端均用NIO

支持的數(shù)據(jù)庫

任意

任意

任意

MySQL

任意

 

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

 

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

 

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

分享到:
標簽:中間件 數(shù)據(jù)庫
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定