自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

運(yùn)維 數(shù)據(jù)庫運(yùn)維 MySQL
傳統(tǒng)的架構(gòu)模式就是應(yīng)用連接數(shù)據(jù)庫直接對數(shù)據(jù)進(jìn)行訪問,這種架構(gòu)特點(diǎn)就是簡單方便。但是隨著目前數(shù)據(jù)量不斷的增大我們就遇到了很多問題,這個時(shí)候就需要用到數(shù)據(jù)庫中間件。

[[241751]]

 

什么需要數(shù)據(jù)庫中間件

傳統(tǒng)的架構(gòu)模式就是應(yīng)用連接數(shù)據(jù)庫直接對數(shù)據(jù)進(jìn)行訪問,這種架構(gòu)特點(diǎn)就是簡單方便。

但是隨著目前數(shù)據(jù)量不斷的增大我們就遇到了問題:

  1. 單個表數(shù)據(jù)量太大
  2. 單個庫數(shù)據(jù)量太大
  3. 單臺數(shù)據(jù)量服務(wù)器壓力很大
  4. 讀寫速度遇到瓶頸

當(dāng)面臨以上問題時(shí),我們會想到的第一種解決方式就是 向上擴(kuò)展(scale up) 簡單來說就是不斷增加硬件性能。這種方式只能暫時(shí)解決問題,當(dāng)業(yè)務(wù)量不斷增長時(shí)還是解決不了問題。特別是淘寶,facebook,youtube這種業(yè)務(wù)成線性,甚至指數(shù)級上升的情況。

此時(shí)我們不得不依賴于第二種方式: 水平擴(kuò)展 ,除了增加應(yīng)用服務(wù)器外,還會涉及到數(shù)據(jù)庫的垂直以及分庫分表,數(shù)據(jù)庫讀寫分離等,這個時(shí)候就需要用到數(shù)據(jù)庫中間件。

數(shù)據(jù)庫中間件的功能

1.通用的數(shù)據(jù)庫中間件會支持多種數(shù)據(jù)庫的協(xié)議。

連接數(shù)據(jù)庫中間件用的是標(biāo)準(zhǔn)的數(shù)據(jù)庫協(xié)議如jdbc,而數(shù)據(jù)庫中間件在與各種數(shù)據(jù)庫通訊時(shí)用的是各數(shù)據(jù)庫的協(xié)議。這樣在應(yīng)用程序中就可以透明化的使用數(shù)據(jù)庫,減少開發(fā)成本,與適配數(shù)據(jù)庫所帶來開發(fā)成本,如圖:

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

2.讀寫分離:讀、寫分離的原理是將事務(wù)型操作(增、刪、改)與非事務(wù)弄操作(讀)分發(fā)到不同數(shù)據(jù)庫實(shí)例上去執(zhí)行。數(shù)據(jù)庫實(shí)例之間要進(jìn)行數(shù)據(jù)的主、從同步,往往寫數(shù)據(jù)庫實(shí)例為主數(shù)據(jù)庫;讀數(shù)據(jù)庫實(shí)例為從數(shù)據(jù)庫。如下圖所示:

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

上面的圖可以看出,黃線代表寫請求,綠線代表讀請求,藍(lán)色數(shù)據(jù)同步,這就是一個簡單的讀寫分離。

3. 分庫分表:分庫、分表是為了將不同的業(yè)務(wù)數(shù)據(jù)存儲于不同數(shù)據(jù)庫實(shí)例上,從而達(dá)到減少數(shù)據(jù)庫實(shí)例表的基礎(chǔ)數(shù)據(jù)量和業(yè)務(wù)的分布式處理。

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

上面這幅圖就可以看出數(shù)據(jù)庫中間件作用,比如下面的這個SQL:

 

  1. select from table_name where id = 1 

按照中間件分庫分表算法,此SQL將發(fā)送到DB1節(jié)點(diǎn),由DB1這個MySQL負(fù)責(zé)解析和獲取id=1的數(shù)據(jù),并通過中間件返回給客戶端。

MySQL主流中間件:Atlas,cobar,TDDL等

目前市面上中間件種類很多種 :

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

Cobar:

阿里巴巴B2B開發(fā)的關(guān)系型分布式系統(tǒng),管理將近3000個MySQL實(shí)例。 在阿里經(jīng)受住了考驗(yàn),后面由于作者的走開的原因cobar沒有人維護(hù) 了,阿里也開發(fā)了tddl替代cobar。

MyCAT:

社區(qū)愛好者在阿里cobar基礎(chǔ)上進(jìn)行二次開發(fā),解決了cobar當(dāng)時(shí)存 在的一些問題,并且加入了許多新的功能在其中。目前MyCAT社區(qū)活 躍度很高,目前已經(jīng)有一些公司在使用MyCAT。總體來說支持度比 較高,也會一直維護(hù)下去,

Atlas:

360團(tuán)隊(duì)基于mysql proxy 把lua用C改寫。原有版本是支持分表, 目前已經(jīng)放出了分庫分表版本。在網(wǎng)上看到一些朋友經(jīng)常說在高并 發(fā)下會經(jīng)常掛掉,如果大家要使用需要提前做好測試。

淘寶TDDL

淘寶根據(jù)自己的業(yè)務(wù)特點(diǎn)開發(fā)了TDDL(Taobao Distributed Data Layer 框架,主要解決了分庫分表對應(yīng)用的透明化以及異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)復(fù)制,它是一個基于集中式配置的 jdbc datasource實(shí)現(xiàn),具有主備,讀寫分離,動態(tài)數(shù)據(jù)庫配置等功能。

TDDL所處的位置(tddl通用數(shù)據(jù)訪問層,部署在客戶端的jar包,用于將用戶的SQL路由到指定的數(shù)據(jù)庫中):

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

淘寶很早就對數(shù)據(jù)進(jìn)行過分庫的處理, 上層系統(tǒng)連接多個數(shù)據(jù)庫,中間有一個叫做DBRoute的路由來對數(shù)據(jù)進(jìn)行統(tǒng)一訪問。DBRoute對數(shù)據(jù)進(jìn)行多庫的操作、數(shù)據(jù)的整合,讓上層系統(tǒng)像操作一個數(shù)據(jù)庫一樣操作多個庫。

下圖展示了一個簡單的分庫分表數(shù)據(jù)查詢策略:

阿里P8架構(gòu)師談:數(shù)據(jù)庫中間件的功能、適用場景、淘寶TDDL詳解

 

主要優(yōu)點(diǎn):

1.數(shù)據(jù)庫主備和動態(tài)切換

2.帶權(quán)重的讀寫分離

3.單線程讀重試

4.集中式數(shù)據(jù)源信息管理和動態(tài)變更

5.剝離的穩(wěn)定jboss數(shù)據(jù)源

6.支持mysql和oracle數(shù)據(jù)庫

7.基于jdbc規(guī)范,很容易擴(kuò)展支持實(shí)現(xiàn)jdbc規(guī)范的數(shù)據(jù)源

8.無server,client-jar形式存在,應(yīng)用直連數(shù)據(jù)庫

9.讀寫次數(shù),并發(fā)度流程控制,動態(tài)變更

10.可分析的日志打印,日志流控,動態(tài)變更 

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2018-08-28 16:22:57

數(shù)據(jù)庫NoSQLSQL

2018-08-07 10:04:11

數(shù)據(jù)庫分布式緩存Redis

2020-10-26 11:41:47

kill代碼

2017-11-27 05:36:16

數(shù)據(jù)庫中間件TDDL

2018-09-12 20:12:11

MySQL慢查詢優(yōu)化索引優(yōu)化

2019-02-26 12:40:10

程序員架構(gòu)師阿里

2017-05-23 18:55:05

mysql-proxy數(shù)據(jù)庫架構(gòu)

2015-08-11 11:16:36

淘寶中間件

2017-12-01 05:04:32

數(shù)據(jù)庫中間件Atlas

2017-11-27 05:06:42

數(shù)據(jù)庫中間件cobar

2019-07-22 22:22:02

架構(gòu)運(yùn)維技術(shù)

2019-11-12 08:40:03

RocketMQ架構(gòu)

2018-02-24 19:37:33

Java8數(shù)據(jù)庫中間件

2020-01-14 14:37:29

JVMJava體系

2011-08-10 13:03:58

CJDBC數(shù)據(jù)庫集群

2012-02-02 10:23:07

2020-07-20 14:00:26

架構(gòu)運(yùn)維技術(shù)

2021-04-19 08:25:03

架構(gòu)師公司系統(tǒng)

2017-12-11 13:30:49

Go語言數(shù)據(jù)庫中間件

2017-07-26 09:41:28

MyCATSQLMongoDB
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號