Flink1.13也一样
生产就绪检查清单提供一个配置文件的概览,在投放到生产前应该应该细心考虑.虽然Flink社区尝试提供一些明智的配置,那也是非常重要的来确认每个选项是否满足你的需求.
设置一个显示的最大并发数
最大并发数设置在每个job和每个操作上,决定最大的并行,状态的并行是可以被扩容的. 在任务开始时目前没有办法改变操作的并行,不丢失操作状态. 存在最大并行数的原因, 对比允许操作状态被无限扩展,是因为你的应用性能的状态的太小会被影响. 一般来说,你应该用最大的并行度,足够适合你以后的扩展,同时 保持他满足你最小的性能需求.
最大并行必须满足条件:0 < parallelism <= max parallelism <= 2^15
你可以使用setMaxParallelism(int maxParallelism)显示设置最大并发. 如果没有设置,Flink会决定使用当前任务运行时的操作函数的并行数.
128
: 所有的并行数 <= 128.MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)
: 所有的并行数 <= 128.
给操作操作设置UUIDS
正如文档中savepoints, 用户应该为每个DataStream的操作设置uuid. Flink 操作状态映射到UUID是必需的,返过来对savepoints也是要用的.默认uuid生成是通过遍历JobGraph和hash指定操作属性. 对用户来说是非常方便的,但当JobGraph变时(例如换了算子),它会生成新的uuid. 为了确保一个稳定映射,我们提供一个稳定的操作符,通过 setUid(String uid);
选择正确后端状态存储
查看??????后端状态存储来选择合适你的存储
使用合适的Checkpoint时间
Checkpoint是Flink主要的容错机制, 其中你任务状态周期的快照持久化到位置. 在某些失败的情况下, Flink重启从最近的checkpoint并且恢复运行. 任务周期的checkpoint配置多长时间做一次快照.没有一个完善的时间间隔, 社区可以指导你当配置参数时,什么因素需要被考虑.
- 服务中SLA是什么:Checkpoint时间间隔被了解作为任务服务组别协议来表达(SLA).在最差的场景,下次checkpoint前一秒,任务失败,多少数据你可以被容错再资正常运行? checkpoint设置为5分钟,表明Flink重新启动,不会再处理超过5分钟之后的数据.
- 服务传递结果的频率是多少:精确一次的Sinks,像Kafka或FileSink,仅仅可结果在看的见checkpoint完整. 更短的checkpoint间隔,使结果展示更快,也会增加额外的压力在对应的系统上. 与你的合作者找到一个满足产品需求的交付时间,并且不会对你的sink有过大压力是非常重要的.
- Task Manager需要维持多大的压力:所有Flink构造后端状态支持异步checkpoint,也就是说快照处理不会暂停数据处理. 无效怎样,他需要CPU周期处理和网络带宽.增加checkpoint是非常有效的工具来减少在checkpoint的消耗.
最重要的是,测试和监控任务.每个Flink任务老师唯一的,最好的方式是找到合适checkpoint时间间隔,在实践中.
配置JobManager高可用
Jobmanager作为中心来调度每个Flink部署,负责集群中计划运行和资源管理.在集群中只有一个,并且 如果它挂了,新的任务可以不能被提交,正在运行的任务会失败.
配置高可用,要结合Apache Zookeeper或是Kubernates基础服务,允许快速恢复,这老师生产设置强烈推荐的.