「埃尔法哥哥」DB与ES混合应用之数据离线同步( 三 )


丰富的编程模型 , 层次分为 Streaming->Dataset->Table->SQL
支持流式计算与离线计算 , 其中支持泛JDBC数据源离线同步到Elastic
集群化运行模式 , 需要自主编写数据处理代码 。
Flink虽然定位在实时计算领域 , 但由于其底层架构设计的特点 , 离线计算支持也非常好 , 提供了友好的编程模型 , 可快速开发部署 , 类似的产品还有Spark , 这里就做更多的展开讨论 。

「埃尔法哥哥」DB与ES混合应用之数据离线同步
本文插图
【「埃尔法哥哥」DB与ES混合应用之数据离线同步】

Flink平台架构编程模型抽象层次
ETL工具
专业ETL产品太多了 , 就不展开讨论了 , 由专业的BI从业人员讲述更合适...
Kettle
DataStage
Informatica
技术平衡
以上我们介绍了好几种当下流行的数据同步工具 , 有的支持离线同步 , 有的也支持实时同步 , 其实还有更多其它不错的工具产品 , 每一种工具产品都有它的局限性与优越性 , 千万不可一概而论 , 也不可全都上 , 需要综合业务与技术平衡 。
客观认知
每种工具产品都有它的定位 , 需要客观的认知评估 。 在业务系统中数据离线同步场景需求多种多样 , 没有一个完美的产品可以应对所有场景需求 。
如DataX属于直接型同步工具 , 中间没有数据处理功能 , 其Mysql模块虽然支持所谓的增量型同步 , 但分批次的连续型同步方式需要借助人工触发 , 这会造成一些不方便 , 但是数据吞吐量很好 。
有一次客户现场服务说Logstash居然不支持JDBC写入数据的插件 , 然后得出结论此工具产品做的不好 , 理由是不满足多个数据库之间数据同步 , 考虑到他们属于传统实体企业就没有做过多的讨论 , 实际上Logstash已经做的非常好 , 适合的数据同步场景很多 , 相比DataX多了一个分批次连续的定时机制 , 不知道要减少多少工作量 。

「埃尔法哥哥」DB与ES混合应用之数据离线同步
本文插图

Logstash示意代码
混搭组合
业务系统中数据离线同步场景多种多样 , 单一工具产品无法完成所有场景 , 需要混合多种工具产品完成 。
如NiFi平台型产品, 功能很强大很丰富 , 也支持从本地文件读取数据 , 但是此方式太重 , 程序包本身很大 , 需要好几个G磁盘容量 , 可能需要同步的数据量都没有NiFi安装包大 , 所以此时应该选择一些单机版本的工具产品 , 如Logstash等
NiFi产品安装包大小
技术融合
每种产品工具都有它的架构设计理念 , 有它的独特技术特点 , 掌握并很好融合需要一定的精力和时间 , 否则会出现很多衍生问题 。 如Flink从开发层面来看, 入门简单并可完成数据同步代码的开发 , 但是真正复杂的是架构运维掌控能力 , Flink是平台型产品 , 本身复杂度很高 。

「埃尔法哥哥」DB与ES混合应用之数据离线同步
本文插图

技术融合能力
技术融合能力分层:
开发层面 ,了解产品各种Api特性 , 能够熟练响应各种需求
架构层面 , 深入了解产品基本原理 , 对其基本的能力有很客观的认知
运维层面 , 掌握产品的运维能力 , 各种异常情况有响应的保障手段
结语
经验总结
数据同步是一个仁者见仁 , 智者见智的话题 , 成熟的产品工具可以快速响应需求 , 重新编写程序可以更好的定制化需求 , 因人而异 , 因需求而异 。
Elastic有很多优秀特性 , 即可以应对实时数据场景 , 也可以应对历史数据场景 , 有点儿几乎无所不能 。 “Elastic用的好 , 下班下的早” 。


推荐阅读