问题描述
我正在构建一个有助于监视多个运算符的数值性能的类。我目前的想法是创建一个类似update()
的方法,并在每次需要操作员更新某些内容时都调用此方法。但是,这意味着我需要创建一个对象,该对象对于我要监视的每个操作员都是可见的。这可能吗?还是会有更好的解决方案?谢谢!
解决方法
如果您知道所有操作员都在单个JVM(您有一个任务管理器)中运行,则可以创建一个单例,所有操作员都可以使用该记录来记录活动。
如果它是具有多个TM的Flink集群,则每个TM都在各自的JVM中运行,因此您必须使用一些分布式系统来记录此活动。
俗气的解决方案是使用日志记录,然后对日志进行后期处理以提取所需的信息。
或者您也许可以使用Flink的内置指标来收集所需的信息。