乾貨分享 | HZERO系列元件之資料分發元件(二),ElasticSearch同步方案

語言: CN / TW / HK

圖片

上文我們講述了利用資料分發元件如何進行廣播表的資料分發,相信大家對資料分發也有了一定的瞭解,但是資料分發能做到的不僅僅是MYSQL表對錶的同步,還有更多的適用場景,這裡我們分享一個ElasticSearch同步方案。

同步方案概述

資料分發適用場景

本質上該工具是監控資料增量檔案,進行增量資料分發,可以減少程式碼層面的埋點和開發,比較適合我們專案交付的場景:

1.大資料量查詢瓶頸,關係型資料庫MYSQL,當資料量達到一定量級時,查詢會產生瓶頸,將資料分發至ES,利用ES的搜尋特性可大幅提升查詢效能;

2.業務產品和HZERO基礎服務分資料庫例項跨庫查詢問題,比如業務產品需要關聯查詢Iam_user使用者表資訊,除了使用Feign,還可以把Iam_user表分發到兩個庫中,在目標庫直接Sql查詢;

3.增量訊息佇列生產,監聽Mysql binlog增量推送佇列,可自定義消費者邏輯進行佇列消費;

4.快取資料同步,將Mysql資料同步至Redis,減少程式碼開發。

ElasticSearch同步方案

圖片

以改造O2產品訂單查詢為例

現狀:產品層面按“平臺”進行劃分,底層分為了四套訂單表,每套表有大部分欄位是一樣的個別欄位有區別,程式碼層面分為了四套策略,列表查詢需要必輸“平臺”欄位,才能確定查詢走哪套表的查詢策略。

改造目標:查詢聚合到一處,”平臺“欄位設定為非必輸,同時能滿足未來大資料量增長的需求,保障查詢效能。

MYSQL資料庫分四張表:

    O2omc_jd_order

    O2omc_order

    O2omc_pub_order

    O2omc_tm_order;

Cloud Canal同步任務:全量同步、增量同步(秒級延遲)、個性化程式碼寬表處理;

ES匯聚為一個索引:將資料聚合至一處,Join查詢欄位做欄位冗餘,訂單行表做巢狀文件;

列表查詢:改造為ES語法,從ES索引中查詢,O2產品有提供ES查詢分頁元件(比直接使用ES操作類方便);

詳情查詢:通過平臺+ID,能夠精確匹配到表和記錄,仍然可從MYSQL查詢。

 

ES查詢索引構建

梳理查詢欄位

梳理介面上查詢需要的欄位,找出非訂單表的欄位,冗餘到訂單上,幾種型別欄位處理如下:

表上沒有的欄位:如果是前置流程產生的則直接寬表冗餘,如果是後續流程的比如是否退貨,則需要新增Mysql欄位回寫。

行表字段:做巢狀文件,比如SkuCodes。

新建ES索引

雖然配置任務時可預設生成索引,型別都是自動匹配,但建議索引手工建立,欄位型別有保證,參考如下:

索引名稱:Glzoms_omc_order_0,字首建議能按業務型別劃分,同一類命名相同,字尾為租戶Id;

索引的Doc Id:目前是Order_code,四套表的Order_code全域性唯一。

新建ES別名

使用別名:上線後有概率需要刪除重建索引欄位,由於索引全量同步任務需要一段時間,所以不建議查詢直接操作索引,建議操作別名,切換時間比較短。

別名名稱:Glzoms_omc_order_alias_0,跟索引名稱規則基本一致,字尾為租戶ID。

POST _aliases{  "actions" : [{"remove" : {"index" : "glzoms_omc_order_0" , "alias" : "glzoms_omc_order_alias_0"}}],  "actions" : [{"add" : {"index" : "glzoms_omc_order_0" , "alias" : "glzoms_omc_order_alias_0"}}]}

同步任務配置

新建MYSQL資料來源

1.可以使用阿里雲賬號,也可以使用自建賬號密碼模式(一般習慣用賬號密碼模式,許可權分配比較簡單)

2.網路地址最好填寫內網,避免網路延遲

3.按步驟填寫後點擊測試連結。

新建Elasticsearch資料來源

1.可以使用阿里雲賬號,也可以使用自建賬號密碼模式(一般習慣用賬號密碼模式,比較簡單)

2.網路地址最好填寫內網,避免網路延遲,注意主要加上埠,ES預設為9200

3.配置完成後,列表頁點選測試連線。

圖片

新建訂單同步任務

1.左邊是來源,選擇Mysql,選擇訂單所在的Schema,右邊是目標,選擇Es,高階配置保持預設

圖片

2.根據實際選擇任務的配置,一般選擇第一個

3.不要使用自動建立的索引(對映的欄位型別可能有問題),選擇自己新建的索引

圖片

4.建立任務

 

檢查同步狀態

圖片

出錯可以點選檢視日誌排查

圖片

 

通過上述的資料分發配置步驟,能夠把MYSQL的資料匯聚到ElasticSearch上,配合ElasticSearch分頁查詢元件,利用ElasticSearch優秀的查詢效能,可以輕鬆支撐千萬級別資料量的查詢,同時ElasticSearch上的資料會隨著MYSQL的改動而實時同步,也降低了資料操作的難度。

下篇我們將講述資料分發元件之自定義程式碼處理,敬請期待。

 

下期預告

乾貨分享 | HZERO系列元件之資料分發元件(三),自定義程式碼處理

往期推薦

1漢得企業級數字化PaaS平臺 HZERO 1.9.0 版本正式釋出!

2漢得aPaaS低程式碼平臺-飛搭 2.3.0 RELEASE正式釋出!

3重磅釋出 | 漢得iPaaS全域整合平臺 集星獺 1.5.0 版本正式釋出

4乾貨分享 | HZERO系列元件之輔助開發核心包,一招搞定開發!

5乾貨分享 | HZERO系列元件之訊息管理元件,滿足您的多種傳送需求

6乾貨分享 | HZERO系列元件之資料分發元件(一),廣播錶快速入門

 

聯絡我們

產品試用請登入開放平臺。請在 PC 端開啟:

https://open.hand-china.com/market-home/trial-center/

產品詳情請登入開放平臺:

https://open.hand-china.com/document-center/

如有疑問登入開放平臺提單反饋

https://open.hand-china.com/

圖片

圖片

▲ 更多精彩內容,掃碼關注 “四海漢得” 公眾號