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



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

从Mongodb切换到Elastic , 技术栈更换
技术产品
离线同步相比实时同步 , 技术复杂度降低很多 , 场景苛刻需求也要小很多 , 因此技术方案的选择度更多 , 有很多非常优秀的专用工具产品 , 只需要稍微配置即可启用 , 下面我们介绍几个当下很流行的产品(个人喜好问题) , 简要分析它们的优秀特性以及架构原理 。
Logstash
Logstash是Elastic官方产品 , 掌握Elastic-stack必备之一
基于Jvm平台JRuby语言开发 , 开源免费
产品架构设计简洁优秀 ,模块设计层次分明 ,input -> filter -> output
支持pipeline模型 , 且多个pipeline之间可以相互依赖
产品功能丰富 , 支持的数据源众多 , 也支持自定义编辑 , 其中包括Ruby脚本
支持泛JDBC协议 , 采用SQL表达式 , 从DB抽取数据到ES , 支持CRON定时 , 可做实时同步
与Elastic-stack可集成一体 , 在Kibana可以查看监控数据
单实例运行模式 , 多实例之间无集群通信 , 不支持集群 , 易掌握部署
非平台型工具 , 轻量级
Logstash 在开发圈中流行度不大 , 但在运维圈流行度很高 , 主要得益于ELK组合的概念普及 , 其实在数据同步方面 , 是最简单的最实用的产品工具之一 。

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

logstash高级架构图
DataX
DataX是阿里出品的数据同步工具 , 定位多种数据库之间离线数据同步
基于Java开发 , 插件机制
产品架构设计简单 , 两大概念模块 , reader->writer
支持DB到Elastic数据同步 , 采用SQL表达式 , 仅限制离线同步
单实例运行模型 , 多实例之间无集群通信 , 无集群模式支持 , 易掌握使用
非平台型工具 , 轻量级
DataX工具称不上优秀 , 得益于阿里巴巴的名气 , 使用简洁与性能吞吐好 , 获得开发圈很大的支持 , 在很多一次性离线数据同步项目中 , 应用很广 。

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

DataX内部架构设计
NiFi
NiFi是Apache的顶级产品项目之一 , 由美国军方早期开发捐献开源 , 定位数据同步领域 。
基于Java语言开发 , 插件机制 , 支持自定义开发
产品架构设计优秀 , Processor 核心模块概念 ,
功能强大 , 支持复杂的脚本功能 , 包括java , javascript , python , ruby等
支持DB到Elastic数据同步 , 可采用SQL表达式方式 , 也可以采用CDC机制
即可实时同步 , 也可离线同步 , 且可支持多种Processor组合
友好的操作界面 , 可视化配置
平台型产品 , 支持集群部署
入门简单 , 精通门槛高
NiFi虽然历史悠久 , 但在国内知名度却不高 , 不如Hadoop圈的Sqoop等 , 不过CDH已经在最新版中集成 。 个人非常喜欢这款产品 , 因为其平台化的系统架构 , 前面介绍的DataX与Logstash都属于雕虫小技的工具 , 已知国内NiFi最大应用规模是OPPO的数据i平台 , 号称日处理数据超过200TB , 详细见文章分享《OPPO 数据中台之基石:基于 Flink SQL 构建实数据仓库》

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

NiFi平台集群示意图
Flink
Flink是当前大数据圈最有人气的流式处理产品 , 在实时计算领域应用最广 。
基于Java语言编写 , 平台型产品
分布式架构设计 , 机制功能丰富 , 支持检查点机制 , 程序容灾、状态持久等


推荐阅读