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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值