基于canalclient實現(xiàn)canal同步es的示例分析

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)基于canal client實現(xiàn)canal同步es的示例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、小店網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為小店等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

canal是阿里開源的一款純java語言的MySQL增量訂閱工具,主要是偽裝成slave節(jié)點,向mysql發(fā)送 dump協(xié)議官方原理如圖:

基于canal client實現(xiàn)canal同步es的示例分析

官方的解釋:    

                          server代表一個canal運行實例,對應(yīng)于一個jvm

                          instance對應(yīng)于一個數(shù)據(jù)隊列 (1個server對應(yīng)1..n個instance)

個人是這么理解的instance當(dāng)做一個mq中的topic隊列(kafka中的broker),canal client相當(dāng)于mq中的消費者.instance接收到數(shù)據(jù)通過parse解析之后經(jīng)過sink進(jìn)行數(shù)據(jù)加工,最后存儲到sore中,由canal client來進(jìn)行消費.

          由于業(yè)務(wù)數(shù)據(jù)量較大,單表超億,根據(jù)實際業(yè)務(wù)對數(shù)據(jù)庫進(jìn)行分庫分表,es中存儲主鍵和賬號對應(yīng)關(guān)系,訪問數(shù)據(jù)庫時先送es中獲取主鍵再查db,這樣可以直接打到對應(yīng)分片上秒回

         起初打算采用官方提供的工具實現(xiàn),后續(xù)發(fā)現(xiàn)官方的不太符合我們的需求(或許是自己沒搞明白官方的工具),并切我們是分庫分表的,按照官方的配置太過繁瑣.一個表到底層就分了幾百張表,所以決定就基于canal client自己實現(xiàn)了同步es,全量和增量.不過踩了不少得吭.

        采用es的bulk api批量更新 .設(shè)置自定義模板,后續(xù)翻閱官方的源碼,其實大致也是這么實現(xiàn)的,只不過官方的具有通用性而已.

        啟動方法:

基于canal client實現(xiàn)canal同步es的示例分析

 連接canal server代碼:

基于canal client實現(xiàn)canal同步es的示例分析

基于canal client實現(xiàn)canal同步es的示例分析

解析binlog的代碼也很簡單,不過自己實現(xiàn)的不具備通用性,勿噴:

基于canal client實現(xiàn)canal同步es的示例分析

基于canal client實現(xiàn)canal同步es的示例分析

將數(shù)據(jù)進(jìn)行組裝批量提交:

基于canal client實現(xiàn)canal同步es的示例分析

基于canal client實現(xiàn)canal同步es的示例分析

就這個不困擾了.es和msyql總是差那么10-100條不等,后續(xù)找到的原因,由于設(shè)置批量是1000,而數(shù)據(jù)庫更新操作tps較低,所以造成兩者之間數(shù)據(jù)延時.將批量數(shù)逐個降低測試最后調(diào)整到50批次,es和mysql數(shù)據(jù)時延降低到毫級了.

全量同步的較為簡單.個人是這樣實現(xiàn)的.首先將mysql中20億數(shù)據(jù)量導(dǎo)出到文本文件,我們只需要主鍵和賬號兩個字段即可,并且是分庫分表的,導(dǎo)出非???1億的數(shù)據(jù)量30秒以內(nèi)全部導(dǎo)出.然后通過緩沖流一行一行讀取文件,調(diào)用bulk api批量入es,es 5個數(shù)據(jù)節(jié)5分片一副本,單節(jié)點40核物理機(jī) 內(nèi)存512G jvm設(shè)置31G raid0 sas盤,1億數(shù)據(jù)量基本5分鐘以內(nèi)就可導(dǎo)入es中,目前線上運行2月沒發(fā)現(xiàn)異常.

上述就是小編為大家分享的基于canal client實現(xiàn)canal同步es的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁名稱:基于canalclient實現(xiàn)canal同步es的示例分析
URL標(biāo)題:http://muchs.cn/article0/ghshio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站維護(hù)、小程序開發(fā)外貿(mào)建站、關(guān)鍵詞優(yōu)化建站公司

廣告

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

外貿(mào)網(wǎng)站制作