mysql中間件怎么用,mysql消息中間件

生產(chǎn)環(huán)境都使用什么Mysql中間件

生產(chǎn)環(huán)境都使用什么Mysql中間件

10年的曾都網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整曾都建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“曾都網(wǎng)站設(shè)計(jì)”,“曾都網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

{OneProxy是經(jīng)過他對MySQL Proxy進(jìn)行修改過的版本,可以透明地支持MySQL分庫分表、讀寫分離、Failover的一個(gè)高效的獨(dú)立的中間件,對應(yīng)用基本透明,非常適合于企業(yè)搭建私有的MySQL RDS集群,很好地解決數(shù)據(jù)層的可擴(kuò)展性問題

如何利用一個(gè)數(shù)據(jù)庫中間件擴(kuò)展MySQL集群

安裝Go語言環(huán)境 。

git clone?https //github com/flike/kingshard.git?src/github.com/flike/kingshard

cd src/github.com/flike/kingshard

source ./dev.sh

make

設(shè)置配置文件

運(yùn)行kingshard。./bin/kingshard -config=etc/ks.yaml

mysql中間件

分布式分表和讀寫分離的中間件,其實(shí)還有一些專注于分布式事務(wù)的、數(shù)據(jù)復(fù)制傳輸?shù)牡鹊?,比如fescar,canal、outter等等。

主要功能:

1. 讀寫分離

2. 從庫負(fù)載均衡

3. IP過濾

4. SQL語句黑白名單

5. 自動(dòng)分表

Atlas是由 Qihoo 360, Web平臺部基礎(chǔ)架構(gòu)團(tuán)隊(duì)開發(fā)維護(hù)的一個(gè)基于MySQL協(xié)議的數(shù)據(jù)中間層項(xiàng)目。它是在mysql-proxy 0.8.2版本的基礎(chǔ)上,對其進(jìn)行了優(yōu)化,增加了一些新的功能特性。360內(nèi)部使用Atlas運(yùn)行的mysql業(yè)務(wù),每天承載的讀寫請求數(shù)達(dá)幾十億條。

Altas架構(gòu):

Atlas是一個(gè)位于應(yīng)用程序與MySQL之間,它實(shí)現(xiàn)了MySQL的客戶端與服務(wù)端協(xié)議,作為服務(wù)端與應(yīng)用程序通訊,同時(shí)作為客戶端與MySQL通訊。它對應(yīng)用程序屏蔽了DB的細(xì)節(jié),同時(shí)為了降低MySQL負(fù)擔(dān),它還維護(hù)了連接池。

端口開啟(contos|防火墻)

安裝教程

mysql讀寫分離用哪個(gè)中間件比較妥

mysql-proxy是官方提供的mysql中間件產(chǎn)品可以實(shí)現(xiàn)負(fù)載平衡,讀寫分離,failover等,但其不支持大數(shù)據(jù)量的分庫分表且性能較差。

其他mysql開源中間件產(chǎn)品有:Atlas,cobar,tddl。你可以查閱一下相關(guān)信息和各自的優(yōu)缺點(diǎn)。

mysql中間件有哪些

mysql-proxy是官方提供的mysql中間件產(chǎn)品可以實(shí)現(xiàn)負(fù)載平衡,讀寫分離,failover等,但其不支持大數(shù)據(jù)量的分庫分表且性能較差。下面介紹幾款能代替其的mysql開源中間件產(chǎn)品,Atlas,cobar,tddl,讓我們看看它們各自有些什么優(yōu)點(diǎn)和新特性吧。

Atlas

Atlas是由 Qihoo 360, Web平臺部基礎(chǔ)架構(gòu)團(tuán)隊(duì)開發(fā)維護(hù)的一個(gè)基于MySQL協(xié)議的數(shù)據(jù)中間層項(xiàng)目。它是在mysql-proxy 0.8.2版本的基礎(chǔ)上,對其進(jìn)行了優(yōu)化,增加了一些新的功能特性。360內(nèi)部使用Atlas運(yùn)行的mysql業(yè)務(wù),每天承載的讀寫請求數(shù)達(dá)幾十億條。

Altas架構(gòu):

Atlas是一個(gè)位于應(yīng)用程序與MySQL之間,它實(shí)現(xiàn)了MySQL的客戶端與服務(wù)端協(xié)議,作為服務(wù)端與應(yīng)用程序通訊,同時(shí)作為客戶端與MySQL通訊。它對應(yīng)用程序屏蔽了DB的細(xì)節(jié),同時(shí)為了降低MySQL負(fù)擔(dān),它還維護(hù)了連接池。

以下是一個(gè)可以參考的整體架構(gòu),LVS前端做負(fù)載均衡,兩個(gè)Altas做HA,防止單點(diǎn)故障。

Altas的一些新特性:

1.主庫宕機(jī)不影響讀

主庫宕機(jī),Atlas自動(dòng)將宕機(jī)的主庫摘除,寫操作會失敗,讀操作不受影響。從庫宕機(jī),Atlas自動(dòng)將宕機(jī)的從庫摘除,對應(yīng)用沒有影響。在mysql官方的proxy中主庫宕機(jī),從庫亦不可用。

2.通過管理接口,簡化管理工作,DB的上下線對應(yīng)用完全透明,同時(shí)可以手動(dòng)上下線。

3.自己實(shí)現(xiàn)讀寫分離

(1)為了解決讀寫分離存在寫完馬上就想讀而這時(shí)可能存在主從同步延遲的情況,Altas中可以在SQL語句前增加 /*master*/ 就可以將讀請求強(qiáng)制發(fā)往主庫。

主庫可設(shè)置多項(xiàng),用逗號分隔,從庫可設(shè)置多項(xiàng)和權(quán)重,達(dá)到負(fù)載均衡。

4.自己實(shí)現(xiàn)分表

(1)需帶有分表字段。

(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE語句。

(3)支持多個(gè)子表查詢結(jié)果的合并和排序。

這里不得不吐槽Atlas的分表功能,不能實(shí)現(xiàn)分布式分表,所有的子表必須在同一臺DB的同一個(gè)database里且所有的子表必須事先建好,Atlas沒有自動(dòng)建表的功能。

5.之前官方主要功能邏輯由使用lua腳本編寫,效率低,Atlas用C改寫,QPS提高,latency降低。

6.安全方面的提升

(1)通過配置文件中的pwds參數(shù)進(jìn)行連接Atlas的用戶的權(quán)限控制。

(2)通過client-ips參數(shù)對有權(quán)限連接Atlas的ip進(jìn)行過濾。

(3)日志中記錄所有通過Altas處理的SQL語句,包括客戶端IP、實(shí)際執(zhí)行該語句的DB、執(zhí)行成功與否、執(zhí)行所耗費(fèi)的時(shí)間 ,如下面例子。

圖4

7.平滑重啟

通過配置文件中設(shè)置lvs-ips參數(shù)實(shí)現(xiàn)平滑重啟功能,否則重啟Altas的瞬間那些SQL請求都會失敗。該參數(shù)前面掛接的lvs的物理網(wǎng)卡的ip,注意不是虛ip。平滑重啟的條件是至少有兩臺配置相同的Atlas且掛在lvs之后。

source:

alibaba.cobar

Cobar是阿里巴巴(B2B)部門開發(fā)的一種關(guān)系型數(shù)據(jù)的分布式處理系統(tǒng),它可以在分布式的環(huán)境下看上去像傳統(tǒng)數(shù)據(jù)庫一樣為您提供海量數(shù)據(jù)服務(wù)。那么具體說說我們?yōu)槭裁匆盟?,或說cobar--能干什么?以下是我們業(yè)務(wù)運(yùn)行中會存在的一些問題:

1.隨著業(yè)務(wù)的進(jìn)行數(shù)據(jù)庫的數(shù)據(jù)量和訪問量的劇增,需要對數(shù)據(jù)進(jìn)行水平拆分來降低單庫的壓力,而且需要高效且相對透明的來屏蔽掉水平拆分的細(xì)節(jié)。

2.為提高訪問的可用性,數(shù)據(jù)源需要備份。

3.數(shù)據(jù)源可用性的檢測和failover。

4.前臺的高并發(fā)造成后臺數(shù)據(jù)庫連接數(shù)過多,降低了性能,怎么解決。

針對以上問題就有了cobar施展自己的空間了,cobar中間件以proxy的形式位于前臺應(yīng)用和實(shí)際數(shù)據(jù)庫之間,對前臺的開放的接口是mysql通信協(xié)議。將前臺SQL語句變更并按照數(shù)據(jù)分布規(guī)則轉(zhuǎn)發(fā)到合適的后臺數(shù)據(jù)分庫,再合并返回結(jié)果,模擬單庫下的數(shù)據(jù)庫行為。

Cobar應(yīng)用舉例

應(yīng)用架構(gòu):

應(yīng)用介紹:

1.通過Cobar提供一個(gè)名為test的數(shù)據(jù)庫,其中包含t1,t2兩張表。后臺有3個(gè)MySQL實(shí)例(ip:port)為其提供服務(wù),分別為:A,B,C。

2.期望t1表的數(shù)據(jù)放置在實(shí)例A中,t2表的數(shù)據(jù)水平拆成四份并在實(shí)例B和C中各自放兩份。t2表的數(shù)據(jù)要具備HA功能,即B或者C實(shí)例其中一個(gè)出現(xiàn)故障,不影響使用且可提供完整的數(shù)據(jù)服務(wù)。

cabar優(yōu)點(diǎn)總結(jié):

1.數(shù)據(jù)和訪問從集中式改變?yōu)榉植迹?/p>

(1)Cobar支持將一張表水平拆分成多份分別放入不同的庫來實(shí)現(xiàn)表的水平拆分

(2)Cobar也支持將不同的表放入不同的庫

(3) 多數(shù)情況下,用戶會將以上兩種方式混合使用

注意?。篊obar不支持將一張表,例如test表拆分成test_1,test_2, test_3.....放在同一個(gè)庫中,必須將拆分后的表分別放入不同的庫來實(shí)現(xiàn)分布式。

2.解決連接數(shù)過大的問題。

3.對業(yè)務(wù)代碼侵入性少。

4.提供數(shù)據(jù)節(jié)點(diǎn)的failover,HA:

(1)Cobar的主備切換有兩種觸發(fā)方式,一種是用戶手動(dòng)觸發(fā),一種是Cobar的心跳語句檢測到異常后自動(dòng)觸發(fā)。那么,當(dāng)心跳檢測到主機(jī)異常,切換到備機(jī),如果主機(jī)恢復(fù)了,需要用戶手動(dòng)切回主機(jī)工作,Cobar不會在主機(jī)恢復(fù)時(shí)自動(dòng)切換回主機(jī),除非備機(jī)的心跳也返回異常。

(2)Cobar只檢查MySQL主備異常,不關(guān)心主備之間的數(shù)據(jù)同步,因此用戶需要在使用Cobar之前在MySQL主備上配置雙向同步。

cobar缺點(diǎn):

開源版本中數(shù)據(jù)庫只支持mysql,并且不支持讀寫分離。

source:

TDDL

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

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

淘寶很早就對數(shù)據(jù)進(jìn)行過分庫的處理, 上層系統(tǒng)連接多個(gè)數(shù)據(jù)庫,中間有一個(gè)叫做DBRoute的路由來對數(shù)據(jù)進(jìn)行統(tǒng)一訪問。DBRoute對數(shù)據(jù)進(jìn)行多庫的操作、數(shù)據(jù)的整合,讓上層系統(tǒng)像操作一個(gè)數(shù)據(jù)庫一樣操作多個(gè)庫。但是隨著數(shù)據(jù)量的增長,對于庫表的分法有了更高的要求,例如,你的商品數(shù)據(jù)到了百億級別的時(shí)候,任何一個(gè)庫都無法存放了,于是分成2個(gè)、4個(gè)、8個(gè)、16個(gè)、32個(gè)……直到1024個(gè)、2048個(gè)。好,分成這么多,數(shù)據(jù)能夠存放了,那怎么查詢它?這時(shí)候,數(shù)據(jù)查詢的中間件就要能夠承擔(dān)這個(gè)重任了,它對上層來說,必須像查詢一個(gè)數(shù)據(jù)庫一樣來查詢數(shù)據(jù),還要像查詢一個(gè)數(shù)據(jù)庫一樣快(每條查詢在幾毫秒內(nèi)完成),TDDL就承擔(dān)了這樣一個(gè)工作。在外面有些系統(tǒng)也用DAL(數(shù)據(jù)訪問層) 這個(gè)概念來命名這個(gè)中間件。

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

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

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

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

3.單線程讀重試

4.集中式數(shù)據(jù)源信息管理和動(dòng)態(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ā)度流程控制,動(dòng)態(tài)變更

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

egg.js在中間件中怎么使用mysql連接

:建議使用中間件連接,操作數(shù)據(jù)庫的代碼更加簡單。我們的后臺接口就是用的中間件連接。nodejs的設(shè)計(jì)特點(diǎn),使得他本身就很快,即使是讀寫數(shù)據(jù)庫這樣耗時(shí)的操作。用連接池的目的其實(shí)就是想就加快數(shù)據(jù)庫的IO速度。因此如果用nodejs,使用普通連接足矣

當(dāng)前文章:mysql中間件怎么用,mysql消息中間件
文章起源:http://muchs.cn/article42/hschec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、App設(shè)計(jì)、小程序開發(fā)微信公眾號、域名注冊網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)