0 前言
此次使用 Apache NiFi 将 MySQL 热数据物化到 Ignite ,实现即时查询.
Apache NiFi 是高效,可拓展的数据流管理工具.
Ignite 是一个以内存为中心的数据平台,具有数据强一致、高可用、支持标准SQL的特性。
1 应用场景
背景:随着数据库内数据量越来越大,关联查询对业务库 MySQL 造成巨大压力,也影响了用户体验,例如单表1亿数据的sql关联查询耗时将在40分钟以上.
当前方案亮点:重新改变数据查询逻辑,引入内存数据库作为缓冲层,完成秒级SQL查询。
2 技术选型
2.1 内存数据库
Ignite 是一个以内存为中心的数据平台,具有数据强一致、高可用、支持标准SQL的特性。
2.2 物化实现和调度
Apache NiFi 是高效,可拓展的数据流管理工具.
当前场景内,NiFi用于实现如下功能
- 调度,定期执行物化
- 物化前的业务逻辑,如 清空内存数据库内的指定表
- 从 MySQL 查询数据,并写入 Ignite
3 详细实现
https://hostenwang.github.io/images/from-mysql-materialized-data-to-ignite/arch.jpg
4 当前方案优势
- 内存计算,性能很高
- 自动化.设定定时后自动完成物化.
5 当前版本存在的不足及解决方法
- ignite 国内活跃度不高,资料少
- nifi 用好需要学习
6 未来规划
- 提高物化速度.可以使用 ignite 原生方法加载数据
- ignite 查询还有优化空间