中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于canal client實現canal同步es的示例分析

發布時間:2021-11-24 14:33:09 來源:億速云 閱讀:518 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關基于canal client實現canal同步es的示例分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

基于canal client實現canal同步es的示例分析

官方的解釋:    

                          server代表一個canal運行實例,對應于一個jvm

                          instance對應于一個數據隊列 (1個server對應1..n個instance)

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

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

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

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

        啟動方法:

基于canal client實現canal同步es的示例分析

 連接canal server代碼:

基于canal client實現canal同步es的示例分析

基于canal client實現canal同步es的示例分析

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

基于canal client實現canal同步es的示例分析

基于canal client實現canal同步es的示例分析

將數據進行組裝批量提交:

基于canal client實現canal同步es的示例分析

基于canal client實現canal同步es的示例分析

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

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

上述就是小編為大家分享的基于canal client實現canal同步es的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太白县| 榆中县| 新巴尔虎右旗| 莆田市| 巴南区| 城口县| 大邑县| 北海市| 安福县| 平湖市| 唐山市| 凤翔县| 常熟市| 白银市| 武乡县| 甘孜县| 秦皇岛市| 镇沅| 开江县| 盖州市| 蓝田县| 易门县| 台北市| 迁安市| 永泰县| 泗阳县| 柘荣县| 广安市| 沅江市| 瑞金市| 界首市| 安丘市| 潮州市| 上林县| 兴山县| 乐山市| 桐柏县| 石家庄市| 晴隆县| 泰宁县| 南充市|