繁体   English   中英

在 Apache Flink 中开发和部署作业

[英]Developing and deploy jobs in Apache Flink

我们开始用 Flink 开发一些工作。 我们当前的开发/部署过程如下所示: 1. 在本地 IDE 中开发代码并编译 2. 将 jar 文件上传到服务器(通过 UI) 3. 注册新作业

然而事实证明,生成的 jar 文件大约为 70MB,上传过程需要几分钟。 加快开发速度的最佳方法是什么(例如,使用服务器上的 ide?)

一种解决方案是使用版本控制系统,在提交和推送更改后,您可以在服务器本身上构建 jar。 您可以为此编写一个简单的脚本。

另一种需要时间和精力的解决方案是建立一个CI CD 管道,该管道将自动化整个过程,并最大限度地减少手动工作。

此外,如果您必须将 jar scp 到集群,请尽量不要使用 fat jar来最小化 jar 大小。

首先,现在上传 70 mb 不应该花几分钟。 您可能需要检查您的网络配置。 当然,如果您的互联网连接不好,您也无能为力。

一般来说,我会尽量避免集群测试运行。 调试缓慢且困难。 它应该只用于性能测试或在发布到生产之前。

所有逻辑都应该进行单元测试。 完整的工作应该经过集成测试,理想情况下,您还应该进行端到端测试。 我建议对外部系统使用基于 docker 的方法,并使用诸如 Kafka 的测试容器之类的东西,这样您就可以从 IDE 运行所有测试。

进入测试集群应该是一件罕见的事情。 如果你发现任何你的自动测试没有覆盖的问题,你需要添加一个新的测试用例并在本地解决它,这样它就很有可能在测试集群上解决。

编辑(地址评论):

如果您编写 Flink 作业来生成数据要容易得多,那么这听起来像是一个可行的选择。 我只是担心你还需要测试那份工作......

听起来更像是您想要一个端到端的设置,您可以连续运行多个 Flink 作业并比较最终结果。 这是由多个 Flink 作业组成的复杂管道的常见设置。 但是,如果涉及多个团队的组件,则维护起来相当困难,并且可能所有权状态不明确。 我更喜欢通过拥有大量指标(产生了多少记录,在每个管道中过滤了多少无效记录......)并拥有仅评估(中间)输出质量的特定验证作业(可能涉及人类)来解决它)。

所以根据我的经验,要么你可以在一些本地作业设置中测试逻辑,要么它太大了,你花在设置和维护测试设置上的时间比实际编写生产代码要多得多。 在后一种情况下,我宁愿相信并投资于您无论如何都需要的(预)生产的监控和质量保证能力。

如果你真的只是想用另一个测试一个 Flink 作业,你也可以在 testcontainers 中运行 Flink 作业,所以从技术上讲,这不是替代方案,而是一个补充。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM