真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

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

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

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

官方的解釋:    

                          server代表一個(gè)canal運(yùn)行實(shí)例,對(duì)應(yīng)于一個(gè)jvm

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

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

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

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

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

        啟動(dòng)方法:

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

 連接canal server代碼:

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

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

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

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

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

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

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

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

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

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

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


新聞標(biāo)題:基于canalclient實(shí)現(xiàn)canal同步es的示例分析
文章來(lái)源:http://weahome.cn/article/ghshio.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部