1.專案背景:
隨著資料規模的越來越大,mysql已經不能適用大資料多維度的查詢,需要用ES等一類的搜索引擎,進行多維度的分詞查詢,MYSQL現階段使用按天分表存盤,不能滿足跨天的長時間查詢,如何以最快的速度完成資料遷移,將資料庫中的資料遷移到ES中,是需要評估的一個重要技術點
2.根本問題:
mysql適合做資料落地,在大量業務資料存盤的情況下,like查詢效率低,不適合多維度查詢
3.使用imi作為資料遷移的微服務Server
首先使用imi作為微服務框架,集成了Eureka,普羅米修斯以及Apollo
對接EUREKA的檔案地址:
https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
Apollo對接檔案
https://github.com/ctripcorp/apollo/wiki
4.關于資料遷移的架構設計
imi完成3個月93張表,上億級別的資料遷移,在imi高性能框架的協助下,一天完成了資料遷移,
遷移方案:
總共8臺機器進行大規模資料遷移,兩臺使用imi作為資料同步的主入口Server,6臺機器作為客戶端集群
6臺客戶機集群 每臺機器客戶程式開啟15個行程
客戶端6個節點的集群設計:
6 * 15 + 3
其中有一臺機器18張表
整體架構流程圖:

5.增量資料架構設計:
將業務資料的變更通過Java Dts 和 Hook 業務 的ORM 將增量資料同步發送到RocketMq,再由RocketMq消費行程池呼叫imi同步服務API,從而完成資料同步,
總體架構流程

6.imi的極速同步
在高IO密集的場景下,單次請求需要80毫秒,imi運用Swoole協程,不斷在用戶態和內核態之間進行切換,充分利用計算機CPU,從而能快速完成海量資料遷移,根據普羅米修斯的監控統計,在 兩臺 2C 4G的機器上,imi以每秒鐘同步1000~1500條的同步速度,完成了上億級別的資料遷移

最后感謝宇潤大佬的辛勤付出,imi框架地址:
https://www.imiphp.com
歡迎大家一起使用imi
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256358.html
標籤:其他
上一篇:2天完成17TB資料量遷移,華為云資料庫是如何做的?
下一篇:Web全堆疊~30.JDBC
