1. 程式人生 > >開源的分散式資料庫中介軟體系統Mycat和阿里巴巴Cobar的對比

開源的分散式資料庫中介軟體系統Mycat和阿里巴巴Cobar的對比

1,愕然回首,它在燈火闌珊處

關於mysql叢集中介軟體,以前寫在應用程式裡面,由開發人員實現,在配置檔案裡面寫多個數據源,寫庫一個數據源,讀庫一個數據源,笨拙不高效,由於程式設計師的差異化,效果並不是特別理想。

後來,組織了開發人員寫了一個自動識別讀寫的功能模組介面,讓開發人員呼叫,這樣能滿足特定場景的業務需求,但是適應性比較窄。

後來出了cobar,但是在高併發這裡出殼了,後來在一次無意中的演講中,見到leader在介紹了mycat,於是眼前一亮,就是它了,不早不晚,在我特別需要的時候,就進入了我的生活。

2,人約黃昏後,月上柳梢頭

記得leader說過,看百集非誠勿擾記千句樂嘉戀愛寶典,不如妹子約起

……

萬事開頭難,興趣攻其艱—>由於喜歡所以自然而然開始學習mycat,途中也認識了很多mycat的同道門,眾所周知,對於我們這些非科班出生的,而且對理論研究不是那麼深入的,實踐永遠是最好的最有效率的學習途徑。

於是有了第一次,還蠻簡單快捷方便的,從下載到安裝然後試用,大概不到30分鐘吧,如筆記所記錄:

之後馬上做了第一個練習,mycat路由轉發原理深度解析,對於此的理解是,mycat接到應用端過來的sql,它會去根據sql中 from後面的表名字,去配置schema.xml裡面讀取其中的所有datanode資源,然後一個個去路由去嘗試請求,詳情見我的blog整理:

疑惑:如果做過資料庫的快取或者對

mysqllimit有印象的話,應該記得有這樣的場景,當limit 找到記錄後,就exit不會繼續遍歷下面未遍歷的資料記錄了。不知道mycat是否可以做到這一點?貌似看debug日誌是遍歷了所有的datenode節點了。

PS:做這2個我還是得心應手,因為有linux基礎,有mysql基礎,所以算是比較順利,好的開頭是成功的一半,更加堅信自己的信心和選擇了。

3,無奈是分離,victor大神

接下來開始接觸mycat比較show time的部分了,讀寫分離和主從切換,對於這2個場景,我接觸的時間蠻久了,但是實現的方式方法多種多樣,以前讀寫分離用原始的刀耕火種,開發人員在ibatis/mybatis裡面寫死了寫庫連線和讀庫連線,之後keepalived+lvs,再之後用了f5的vip負載均衡配置,f5效能固然比較好,但是費用費用也不少的,所以對於網際網路已經中小型公司來說,這筆支出可不實惠啊。

而mycat通過配置readHost和writeHost來實現讀寫分離,裡面有一些配置,比如:

balance為1:讓全部的readHost及備用的writeHost參與select的負載均衡。 
switchType為2:基於MySQL主從同步的狀態決定是否切換。 
heartbeat:主從切換的心跳語句必須為show slave status

在這裡遇到配置的時候,遇到一些問題,在請教了victor大神之後,他給了我他的實現思路和方法,我參考之後,順利解決了,把自己這部分的學習整理成了筆記,如下:

PS:想要victor大神的聯絡方式嗎,在下面留言評論區,留下你的email地址並標註victor,我發你email告訴你的。

4,庖丁血牛之mycat的黑匣子

對於mycat來說,開啟debug這個帕朵拉魔盒,一切一切真相都暴露在大眾面前,在這裡你可以看到select的整個舞蹈軌跡,也可以看到所有的字符集的變換,千人千面萬般操作盡在mycat.log。所以學會分析mycat.log日誌,所有的問題都不再是問題,對於此我深有體會,如下的整理:

5,分紛紛,生活的主旋律

分析了mycat的黑匣子後,對於mycat背後的邏輯以及有了一定的深刻理解了,現在要進階了,做更加難的事情了,這是分散式叢集的重大特徵,在業務量爆炸式增長的場景中,就需要提前考慮根據業務進行分片,在分片的學習中,也得到了victer大神和山狼的的指點,遺憾的是後來山狼因為工作忙碌,交流的越來越少了,而victor大神一直經常交流中,對於分片的嘗試,整理在下面:

在分片的場景中,還有一種業務型別,就是一個分片故障了,如何遷移到新的分片,這個思路實現如下:

6,瑕不掩瑜,mycat的斑點

Mycat有諸多優點,但是也有它不足的地方,比如分頁、跨事務、儲存過程、對db2、mongodb的支援等等,這些都需要了解熟悉,以免在使用的時候給別人挖坑,對這些方面,我們需要了解到實現的細節,然後再用案例去驗證,分析問題癥結所在,如果有java程式碼coding能力,甚至可以修改完善這些不足,對此有整理如下:

7,健壯持久,多多益善

在網際網路分散式應用中,最重要的就是高可用了,高可用能保證應用的持續可用性,這樣能7*24,而mycat也有類似的叢集架構,這是瞭解mycat深入mycat必須的歷程:

為了mycat應用部署的健壯持續,我們需要多mycat進行全方位的監控,有了這些監控資料,我們可以瞭解到mycat執行的資訊,對於優化mycat非常有用,關於這個我有整理如下:

瞭解到這裡,我們就知道,在部署分散式叢集架構之前,肯定需要進行各種壓力測試,來了解mycat的閥值以及它能達到的效能極限,能支撐多少高併發、tps、qps等等,那麼這裡就有一個自帶的工具可以達到我們的效果:

PS:其實走到這裡,行程都是蠻輕鬆的,不太勞累,有點小小得意了,只是常言道人無遠慮必有近憂,接下來就碰到問題了。

8,衣帶漸寬終不悔,為伊消得人憔悴

第一道坎,連線不上oracle資料來源:

在載入oracle資料來源的時候,需要把oracle的jar包放到mycat安裝目錄下,一般是用這個ojdbc14.jar,放到/usr/mysql/mycat/lib目錄下面,然後重新載入下mycat生效。

第二道坎,中文亂碼:

在熟悉這個裡面,我遇到坎了,是最富盛名的中文亂碼問題,oracle裡面字符集是gbk,mysql裡面是utf8,而mycat也是utf8,對於這種差異,如何操作,我搜索了很久,沒有找到合適的方案,忙到半夜11點時候,諮詢leader的時候,遇到了leader的一句神回覆“設定成utg”,然後我設定在了mycat的配置檔案server.xml裡面:

[[email protected]_standby ~]# vim /usr/local/mycat/conf/server.xml                                                                                                                                                                                

<!DOCTYPE mycat:server SYSTEM "server.dtd">

<mycat:server xmlns:mycat="http://org.opencloudb/">

        <system>

        <property name="charset">utg</property>

……

結果我繼續除錯了,發現還是亂碼,然後覺得leader指點的應該沒有錯,可能是別的問題導致的,繼續除錯重組mycat各種情況除錯,1個半小時過去後,還是亂碼,然後引發了牛人靜哥出來了,她說是字符集設定問題,而且我的設定utg是不對的。然後我頓然醒悟,終於意識到leader的神回覆utg是錯誤的,經驗總結不能100%相信權威啊,因為萬一不小心會被他帶進坑裡,結果我不得已回頭重新整理思路,而那時已經1:00了,窗外夜沉如水,我去衝了個涼水澡,回來繼續研究。

泠靜下來後,整理思路,再奮戰了1個小時後,搞定了,思路整理如下:

Mycat對於資料庫而言就是客戶端,一般來講客戶端字元編碼與資料庫服務端一致就不會有什麼問題,或者是嚴格超集,保證插入到資料庫不因轉碼而丟失。客戶端、系統終端、資料庫三者字元庥得協調,否則不一致的話,會有字符集轉換的問題,有時候,顯示正確的,但不一定在資料庫就儲存正確,或者儲存到資料庫的資料編碼正確,沒準顯示為亂碼。這就意味著,在oracle裡面是gbk或者latin1啥都沒有關係,只要做好以下3點:

(1),在遷移到mysql裡面,在mycat平臺上從oracle匯出時候字符集設定為utf8

(2),在mycat平臺上匯入到mysql字符集也要設定為utf8

(3), 然後在mycat平臺上檢視資料也要設定字符集為utf8

做好了以上3點,三而合一,這樣就能正常顯示中文了。

第二天鬧鐘換我起床,睡眼朦朧,鏡中熊貓眼,^_^

9,奇女子靜哥

看到她的名字“靜哥”,我不由得自主想起了一首流傳甚久的歌曲“我不是黃蓉我不懂武功我只要靜哥哥完美的愛情……”,這首歌曲是不是很平民化很雨很有喜感啊,反正我覺得蠻接地氣的哈,歌曲地址是:http://bd.kuwo.cn/yinyue/90334?from=baidu,因為作為金庸迷,對這個太敏感了,所以對她印象很深刻,而且她mycat技術很好口才也好,活脫脫一個現代版小黃蓉啊,而且據leader發的照片來看,確實是標準的江南美女,而且難得的是她剛工作不久還是單身。

SO說道在這裡,大家都懂了吧,有想認識她學習mycat技術或者準備拓展mycat業務的,在文後評論區留下你的email地址並標註靜哥,我會給你發email的告訴聯絡方式的。

10,瑞士軍刀、親親山莊、中國開源第一門派

到此位置,mycat的重要功能點基本完成了,然後就是師傅臨進門修行在個人了,哦對了,還有Mycat最後一個重要點,mycat-eye,這個是蠻有用的,not only formyat,當然目前還是一個半成品,夢想是成為mysql伴侶,只要用了mysql,就離不開mycat-eye,當然夢想是美好,現實是需要我們大家一起去實踐去完善它,儘管如此,mycat-eye還是有它獨特的閃光點:

最後,介紹下,mycat的帶路人,leader-us,看名字,就知道他是mycat的發起人,架構實力很深厚,口才也很好,目前給我感覺是技術領域中營銷實力最強的、映像領域中技術實力最強的。他能看到mycat的市場並且開始運作成立mycat高階服務公司,是很有魄力的。

所以他有成為類似馬雲那樣的企業家的潛質的,他的夢想是成立親親山莊,做高階技術服務和支援,成立諮詢公司,並且做到中國的apache,成為國內開源界的No1,當然了個人實力有限,所以需要大家一起努力,目前開啟眾籌活動,起步是一人5W,大概預計徵集70幾個人,啟動資金有300W到400W左右,他就可以全職參與並運營親親山莊了。

親親山莊的選址是廣州到珠海之間的海島上,風景宜人,適合居住生活。

11,尾聲,左兄與任正非、leader-us與馬雲

新成立的公司裡面,有個左兄,很傳奇,大一在大學入伍,然後復員專業,來上海學IT,年紀輕輕,睡在地鐵站,苦心專研資料庫、系統、中介軟體,現在已經成為了業界大牛,上海地區mycat標杆人物,和他接觸過,膽大心細臉皮厚,而且對朋友和身邊人仗義,深深懂得利益均沾的道理並且也言行一致,覺得他有任年輕時候的影子,未來成就無限。

然後就是leader-us,他有馬雲的口才,還有王堅的技術功底,可以說能說服很多人,而且這次眾籌選擇的物件也很準確,選擇的是在北上廣深一線城市稅後1.5W的從業人員和南京武漢重慶福州二線城市稅後1W的從業人群,對市場目標定位準確,所以leader-us成功的概率非常大,這也是我和左兄還有很多朋友決定加入這個創業團隊的主要原因吧。

目前眾籌已經結束,資金已經到位,已經開始開展mycat高階技術支援服務,大家有需要的,可以在下面評論區留下email地址,我會第一時間聯絡回覆你的,謝謝。

相關推薦

開源分散式資料庫中介軟體系統Mycat阿里巴巴Cobar對比

1,愕然回首,它在燈火闌珊處關於mysql叢集中介軟體,以前寫在應用程式裡面,由開發人員實現,在配置檔案裡面寫多個數據源,寫庫一個數據源,讀庫一個數據源,笨拙不高效,由於程式設計師的差異化,效果並不是特別理想。後來,組織了開發人員寫了一個自動識別讀寫的功能模組介面,讓開發人員呼叫,這樣能滿足特定場景的業務需求

MyCat開源分散式資料庫中介軟體

為什麼需要MyCat? 雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速

開源分散式資料庫中介軟體

雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速增長情況下的資料瓶頸問題。2014年MyCat首次

華為雲分散式資料庫中介軟體DDM開源MyCAT對比

前言 華為雲分散式資料庫中介軟體(Distributed Database Middleware)是解決資料庫容量、效能瓶頸和分散式擴充套件問題的中介軟體服務,提供分庫分表、讀寫分離、彈性擴容等能力,應對海量資料的高併發訪問場景,有效提升資料庫讀寫效能。 圖1:DDM產品介紹   DDM

分散式資料庫中介軟體、產品——sharding-jdbc、mycat、drds

        一般對於業務記錄類隨時間會不斷增加的資料,當資料量增加到一定量(一般認為整型值為主的表達到千萬級,字串為主的表達到五百萬)的時候,效能將遇到瓶頸,同時調整表結構也會變得非常困難。為了避免生產遇到這樣的問題,在做系統設計時需要預估可能產生的資料量:預估記錄主體個

分散式資料庫中介軟體 MyCat 搞起來!

關於 MyCat 的鋪墊文章已經寫了三篇了: MySQL 只能做小專案?鬆哥要說幾句公道話! 北冥有 Data,其名為鯤,鯤之大,一個 MySQL 放不下! What?Tomcat 竟然也算中介軟體? 今天終於可以迎接我們的大 Boss 出場了! MyCat 簡介 前面文章我們提到,如果資料量比較大的話

分散式資料庫中介軟體 MyCat | 分庫分表實踐

### MyCat 簡介 `MyCat` 是一個功能強大的分散式資料庫中介軟體,是一個實現了 `MySQL` 協議的 `Server`,前端人員可以把它看做是一個數據庫代理中介軟體,用 `MySQL` 客戶端工具和命令列訪問;而後端人員可以用 `MySQL` 原生協議與多個 `MySQL` 伺服器通訊,也可

【華為雲分散式資料庫中介軟體 DDM】sidecar負載均衡配置

目錄 福利發放 產品介紹 配置方法 福利發放 目前華為雲分散式資料庫中介軟體DDM有試用體驗活動,申請華為雲賬號後可以單擊如下圖片一鍵體驗: 產品介紹 華為雲分散式資料庫中介軟體(Distributed Database Middleware,簡稱DDM),

網格式大型分散式資料庫中介軟體(Cluster Killer)

1       背景我們知道資料是一個公司的命脈,隨著業務越做越大,資料量也會越來越大,計算也會越來越複雜,效能,可靠性,可擴充套件性的需求就會越來越強烈,這個時候一個集中式的資料庫顯然已經滿足不了需求了。對於技術決策者來說有兩條路可以走,第一:按照現有的大型資料庫的解決

從零開發分散式資料庫中介軟體 一、讀寫分離的資料庫中介軟體

  在傳統的單機體系中,我們在操作資料庫時,只需要直接得到資料庫的連線,然後操作資料庫即可,可是在現在的資料爆炸時代,只靠單機是無法承載如此大的使用者量的,即我們不能縱向擴充套件,那麼我們就只能水平進行擴充套件,即使用讀寫分離的主從資料庫來緩解資料庫的壓力,而在讀寫分離之後

【乾貨】淺談分散式資料庫中介軟體之分庫分表

分庫分表,顧名思義就是把原本儲存於一個庫的資料分塊儲存到多個庫上,把原本儲存於一個表的資料分塊儲存到多個表上。那麼關於分庫分表,你瞭解多少呢?接下來,我們將從什麼是資料分片及如何進行分片兩方面對DDM分庫分表做一個闡釋。什麼是資料分片分片是解決資料庫儲存容量限制的直接途徑。分

入門篇-連線華為雲分散式資料庫中介軟體(DDM)

在成功配置DDM例項後,即可連線訪問DDM例項以及例項下的邏輯庫。 華為雲分散式資料庫中介軟體(DDM)服務目前管理的關係型資料庫,是基於MySQL作為儲存引擎,因此DDM服務相容MySQL大部分語法以及客戶端。關於DDM的使用受限說明,請參見SQL相容性。 DDM例項提

淺談分散式資料庫中介軟體之分庫分表

     分庫分表,顧名思義就是把原本儲存於一個庫的資料分塊儲存到多個庫上,把原本儲存於一個表的資料分塊儲存到多個表上。那麼關於分庫分表,你瞭解多少呢?接下來,我們將從什麼是華為雲大資料解決方案的分片及如何進行分片兩方面對DDM分庫分表做一個闡釋。   

開源資料庫中介軟體- MyCat 學習筆記

1、簡介        MyCat 曾是阿里開源產品Cobar,Cobar核心功能和優勢是 MySQL 資料庫分片。Mycat 是基於 cobar 演變而來,對 cobar 的程式碼進行了徹底的重構,使用 NIO 重構了網路模組,並且優化了 Buffer

資料庫分庫分表中介軟體Mycat分散式資料庫;mysql的分散式事務

官網:http://mycat.io/,裡面有電子書籍可以下載:http://www.mycat.io/document/mycat-definitive-guide.pdf 舊版本下載地址:https://github.com/MyCATApache/Mycat-download,最新軟體下載地址:htt

Mycat資料庫中介軟體

Mycat介紹       中介軟體:代理;       面向企業的開源的資料庫叢集,效能極高;淘寶正在使用;       京東,美團;       資料庫中介

資料庫中介軟體tddl與mycat使用總結

做訂單中心專案的時候正好涉及到了資料庫中介軟體,翻了翻以前的筆記,整理下曾經學習使用過的兩款中介軟體,嗯,簡要總結下。 tddl是淘寶在幾年前推出的一款基於客戶端分片的資料庫訪問中介軟體,mycat(社群活躍)是開源社群基於服務端分片推出的資料庫中介軟體,具體的介紹百度上都

Linux Centos MyCat資料庫中介軟體安裝與配置

前言 如今隨著網際網路的發展,資料的量級也是撐指數的增長,從GB到TB到PB。對資料的各種操作也是愈加的困難,傳統的關係性資料庫已經無法滿足快速查詢與插入資料的需求。這個時候NoSQL的出現暫時解決了這一危機。它通過降低資料的安全性,減少對事務的支援,減少對複雜查詢的支援,來獲取效能

【chenglinhust的專欄】分散式系統 基礎架構 中介軟體系統 安全領域 容器技術 人工智慧

個人簡介 2007.9~2011.7 本科 電腦科學與技術 2011.9~2014.3 碩士 計算機系統結構。目前畢業後一直任職於阿里巴巴雲端計算事業部。聯絡QQ:786071807

資料庫中介軟體-mycat快速入門

準備工作 下載以後的檔案目錄結構如下: 快速入門 配置mycat/conf的server.xml <user name="root"> <property name="password"&