**摘要:**本文源自 StreamPark 在尘锋信息的生产实践,作者是资深数据开发工程师Gump。主要内容为:
- 技术选型
- 落地实践
- 业务支撑 & 能力开放
- 未来规划
- 结束语
尘锋信息是基于企业微信生态的一站式私域运营管理解决方案供应商,致力于成为全行业首席私域运营与管理专家,帮助企业构建数字时代私域运营管理新模式,助力企业实现高质量发展。
目前,尘锋已在全国拥有13个城市中心,覆盖华北、华中、华东、华南、西南五大区域,为超30个行业的10,000+家企业提供数字营销服务。
01 技术选型
尘锋信息在2021年进入了快速发展时期,随着服务行业和企业客户的增加,实时需求越来越多,落地实时计算平台迫在眉睫。
由于公司处于高速发展期,需求紧迫且变化快,所以团队的技术选型遵循以下原则:
- 快:由于业务紧迫,我们需要快速落地规划的技术选型并运用生产
- 稳:满足快的基础上,所选择技术一定要稳定服务业务
- 新:在以上基础,所选择的技术也尽量的新
- 全:所选择技术能够满足公司快速发展和变化的业务,能够符合团队长期发展目标,能够支持且快速支持二次开发
首先在计算引擎方面:我们选择 Flink,原因如下:
- 团队成员对 Flink 有深入了解,熟读源码
- Flink 支持批流一体,虽然目前公司的批处理架构还是基于 Hive、Spark 等。使用 Flink 进行流计算,便于后期建设批流一体和湖仓一体
- 目前国内 Flink 生态已经越来越成熟,Flink 也开始着手踏破边界向流式数仓发展
在平台层面,我们综合对比了 StreamPark 、 Apache Zeppelin 和 flink-streaming-platform-web,也深入阅读了源码和并做了优缺点分析,关于后两个项目本文就不展开赘述,感兴趣的朋友可以去 GitHub 搜索,我们最终选择 StreamPark,理由如下:
完成度高
1. 支持Flink 多版本
//视频链接( Flink 多版本支持 Demo )
新建任务时可以自由选择Flink版本,Flink 二进制版本包会自动上传至 HDFS(如果使用 Yarn 提交),且一个版本的二进制包只会在 HDFS 保存一份。任务启动时会自动根据上下文加载 HDFS 中的 Flink 二进制包,非常优雅。能够满足多版本共存,及升级Flink 新版本试用测试的场景。

2. 支持多种部署模式
StreamPark 支持 Flink 所有主流的提交模式,如 standalone、yarn-session 、yarn application、yarn-perjob、kubernetes-session、kubernetes-application 而且StreamPark 不是简单的拼接 Flink run 命令来进行的任务提交,而是引入了 Flink Client 源码包,直接调用 Flink Client API 来进行的任务提交。这样的好处是代码模块化、易读、便于扩展,稳定,且能在后期根据 Flink 版本升级进行很快的适配。

Flink SQL 可以极大提升开发效率和提高 Flink 的普及。StreamPark 对于 Flink SQL 的支持非常到位,优秀的 SQL 编辑器,依赖管理,任务多版本管理等等。StreamPark 官网介绍后期会加入 Flink SQL 的元数据管理整合,大家拭目以待。


4. JAVA任务在线构建
//视频链接( JAVA 任务构建 Demo)
Flink SQL 现在虽然足够强大,但使用 Java 和 Scala 等 JVM 语言开发 Flink 任务会更加灵活、定制化更强、便于调优和提升资源利用率。与 SQL 相比 Jar 包提交任务最大的问题是Jar包的上传管理等,没有优秀的工具产品会严重降低开发效率和加大维护成本。
StreamPark 除了支持 Jar 上传,更提供了在线更新构建的功能,优雅解决了以上问题:
1、新建 Project :填写 GitHub/Gitlab(支持企业私服)地址及用户名密码,StreamPark 就能 Pull 和 Build 项目。
2、创建 StreamPark Custom-Code 任务时引用 Project,指定主类,启动任务时可选自动 Pull、Build 和绑定生成的 Jar,非常优雅!
同时 StreamPark 社区最近也在完善整个任务编译、上线的流程,以后的 StreamPark 会在此基础上更加完善和专业。

5. 完善的任务参数配置
对于使用 Flink 做数据开发而言,Flink run 提交的参数几乎是难以维护的。StreamPark 也非常优雅的解决了此类问题,原因是上面提到的 StreamPark 直接调用 Flink Client API,并且从 StreamPark 产品前端打通了整个流程。

大家可以看到,StreamPark 的任务参数设置涵盖了主流的所有参数,并且非常细心的对每个参数都做了介绍和最佳实践的最优推荐。这对于刚使用 Flink 的同学来说也是非常好的事情,避免踩坑!