3 个回答
如果是高吞吐低延迟的场景的话,优化方法如下:
1、增大并行度
1、增大并行度
根据CPU核数和TaskManager Slot数,线性扩展处理能力。
2、链式优化:合并轻量级算子(如Map+Filter)为Task Chain,减少线程切换。
发布于:3周前 (05-19) IP属地:
如果是反压的场景的话,优化测量如下:
1、提升瓶颈算子并行度
1、提升瓶颈算子并行度
通过Flink Web UI定位反压节点,针对性增加其并行度。
2、异步IO与批量处理:减少外部系统调用延迟(如数据库写入)。AsyncDataStream.unorderedWait(data, new AsyncDatabaseRequest(), 1000, TimeUnit.MILLISECONDS, 100);
发布于:3周前 (05-19) IP属地:
如果出现数据倾斜,则可以使用的优化方法如下:
1、预分散Key:对Key添加随机前缀(如key + "-" + random.nextInt(10)),二次聚合。
1、预分散Key:对Key添加随机前缀(如key + "-" + random.nextInt(10)),二次聚合。
data.keyBy(key -> key + "-" + ThreadLocalRandom.current().nextInt(10))
.sum(1)
.keyBy(key -> key.split("-")[0])
.sum(1);
2、强制重分布:使用rebalance()或rescale()均匀分配数据。data.rebalance().map(...); // 全量Shuffle
发布于:3周前 (05-19) IP属地:
我来回答
您需要 登录 后回答此问题!