当前位置: 首页 > news >正文

flink常用的几种调优手段的优缺点

背景:

不管是基于减少反压还是基于减少端到端的延迟的目的,我们有时候都需要对flink进行调优,本文就整理下几种常见的调优手段以及他们的优缺点

flink调优手段

1.使用事件时间EventTime模式时,可以设置水位线发送的时间间隔,比如从200毫秒缩小到100毫秒,缩短两倍
正作用:减少事件端到端处理延迟
反作用:对于下游的算子来说,由于其会接收多个上游算子任务的水位记录,所以他们接收到的水印的速度可能远远小于100ms,处理更多的水位线记录会对系统性能造成影响,需要谨慎评估

2.使用setBufferTimeout命令减少网络发送缓冲区的超时时长,这个超时时间表示当上游任务发送网络数据到下游任务时,缓冲区满或者达到超时时间就会发送出去,比如网络缓冲超时时间从100ms变成50ms

正作用:减少端到端的处理延迟
反作用:由于网络缓冲区有可能没有满就被发送到下游算子,导致吞吐量下降

3.使用hashmap状态后端代替rockdb状态后端,基于hashmap的状态后端每次访问状态时都是通过内存直接访问的,速度很快,而访问rockdb的状态后端时,需要经历序列化和反序列化以及可能的磁盘IO,速度很慢

正作用:状态访问速度变快,减少端到端的延迟
反作用:状态很大时不支持,此外,状态放在内存中会导致更频繁的gc,导致消息的处理时延有尖峰波动

4.使用聚合窗口函数而不是全量窗口函数,通过timer触发的方法ontimer尽量减少耗时,此外如果非要使用长时间的全量窗口,那么尽可能的在全量窗口的前面加上预聚合的窗口算子,目的是尽量把长的时间窗口分解成一个个小的时间窗口

正作用: 提高吞吐量和数据处理时延
副作用: 可能会提高代码的复杂度

5.使用异步函数代替同步函数

正作用:提供吞吐量和减少消息处理延迟
反作用: 无

6.对事件流的事件进行字段补充时,每次查找配置表会导致性能很低,可以把配置表转换成配置流,事件流和配置流进行连接,然后在状态中维护配置表即可(可以是广播状态也可以是键值分区状态,ps:由于流连接时,两个流的事件顺序不定,为了保证都能找到配置值,可以在open函数中初始化一个配置表的实例变量)

正作用:减少端到端的时延,并且使用flink的状态来存放配置信息,提高了吞吐量
反作用: 无

http://www.lryc.cn/news/212607.html

相关文章:

  • 如何选择安全又可靠的文件数据同步软件?
  • 使用反射调用类的私有内部类的私有方法
  • 记一次 AWD 比赛中曲折的 Linux 提权
  • [SpringCloud] Feign 与 Gateway 简介
  • [Unity] 个人编码规范与命名准则参考
  • 堆栈与队列算法-以链表来实现队列
  • 快速入门:使用 Spring Boot 构建 Web 应用程序
  • 01.CentOS7静默安装oracle11g
  • SASE安全访问服务边缘
  • k8s集群升级
  • redis原理 主从同步和哨兵集群
  • 四季古诗赏析
  • 【网络协议】聊聊套接字socket
  • GEO生信数据挖掘(十一)STRING数据库PPI蛋白互作网络 Cytoscape个性化绘图【SCI 指日可待】
  • api接口更新钉钉文档
  • Android---如何同view进行渲染
  • 【LeetCode:26. 删除有序数组中的重复项 | 双指针】
  • 如何判断一个对象是不是一个空对象?
  • C/C++ “variable set but not used“的 警告问题解决方案
  • JAVA安全入门之反射
  • 【c++|opencv】一、基础操作---2.图像信息获取
  • HarmonyOS开发:探索组件化模式开发
  • 目标URL启用了不安全的HTTP方法
  • 大数据之LibrA数据库系统告警处理(ALM-12001 审计日志转储失败)
  • 大模型该被知道的技术实现-面向垂直领域
  • 赛灵思产品系列
  • [Linux C] signal 的使用
  • AI时代产品经理升级之道:ChatGPT让产品经理插上翅膀
  • 计算机网络重点概念整理-第七章 网络安全【期末复习|考研复习】
  • 【LeetCode力扣】42. 接雨水