imi在虎撲上億數據遷移實踐

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章