Flink 指标参数源码解读(读取数量、发送数量、发送字节数、接收字节数等)(下)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink 指标参数源码解读(读取数量、发送数量、发送字节数、接收字节数等)(下)

2.4 MetricQueryServiceGateway

从上一步,可以知道调用了MetricQueryServiceGatewayqueryMetrics接口,具体的实现MetricQueryService类的queryMetrics 方法,代码如下:

@Override
public CompletableFuture<MetricDumpSerialization.MetricSerializationResult> queryMetrics(
        Time timeout) {
    return callAsync(
            () -> enforceSizeLimit(serializer.serialize(counters, gauges, histograms, meters)),
            timeout);
}

再看看callAsync方法:

可以得知,本质就是使用了rpcServer去远程调用了接口获取指标了(具体调用了哪里呢?)。

我们看看RpcEndpoint这个类。

2.5 RpcEndpoint

我们看看RpcEndpoint这个类的方法结构:

从这些方法名,我们可以知道,它类似于一个HTTP服务器,从而我们也可以知道,原来FlinkWeb页面访问的服务器就是这个了。在看看其构造方法:

看看里面是怎么开启服务的:

可以知道,是调用了AkkaRpcServicestartServer方法去开启了服务。

好了,这里暂时该停止了,因为偏离了本文的中心,我们需要知道的是这些指标具体从哪里来的?那该如何进行下一步呢?

我们再回到2.4里面的MetricQueryService类,看看这个类是如何构造的?(这里前后连贯性很强)。

2.6 MetricQueryService

可以看到MetricQueryService这个类里面有一个createMetricQueryService方法,这个方法指的就是创建指标查询服务:

看看在哪里调用了这个方法:

可以在指标服务注册中心(MetricRegistryImpl)里面的startQueryService方法调用了,再看看哪里调用了startQueryService这个方法:

可以看到有3个地方开启了这个指标的服务,分别是:

  • ClusterEntrypointFlink集群入口点的基类
  • MiniClusterMiniCluster在本地执行Flink任务
  • TaskManagerRunner:在yarnstandalone模式下,这个类是任务管理器的可执行入口点。它构建相关组件(网络、I/O管理器、内存管理器、RPC服务、HA服务)并启动。

为了方便理解,这里解读本地执行Flink任务的模式就好了,即继续研读MiniCluster

2.7 MiniCluster

MiniClusterstart()方法,可以看到了调用了startQueryService方法

继续看看里面的metricQueryServiceRpcService入参,可以知道,metricQueryServiceRpcService(指标查询服务)是从配置里初始化来的。

继续看看configuration配置:

可以得知,配置是从miniClusterConfiguration里获取的,继续深入:

发现,配置是从构造函数里获取的,继续看看哪里调用了MiniCluster这个类的构造函数方法:

调用这个方法的类有很多,根据命名,可以得知较为合理的是LocalExecutor这个类。

2.8 LocalExecutor

我对LocalExecutor的理解:一个用于执行本地Pipelines(例如:多条FlinkSQL)的执行器。

看看哪里调用了MiniCluster的构造方法:

继续看看哪里调用了create方法,可以得知在LocalExecutorFactory里的getExecutor方法调用了:

Ctrl+T,可以看到在ExecutionEnviromentStreamExecutionEnviroment里调用了:

哦豁,这不是我们日常做Flink开发常用的两个类了么。随便打开StreamExecutionEnviroment这个类看看。

2.8 StreamExecutionEnviroment

可以看到,在里面的executeAsync方法代用了:

到这里,我们知道了配置是从用户初始化StreamExecutionEnviroment传入的。

03 小结

具体指标的参数从哪里获取,我们有了一个很好的分析思路了,我们可以自己编写一个Flink的程序,使用的是StreamExecutionEnviroment,然后断点本文的源码,就知道来龙去脉了。

本文由于篇幅原因,在下一篇博客继续讲解。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
5月前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之设置什么参数可以让多张表同时写入
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
消息中间件 Kubernetes 监控
实时计算 Flink版操作报错合集之在编译源码时遇到报错:无法访问,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3月前
|
SQL 资源调度 数据处理
实时计算 Flink版产品使用问题之-s参数在yarn-session.sh命令中是否有效
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
存储 缓存 监控
Flink内存管理机制及其参数调优
Flink内存管理机制及其参数调优
|
4月前
|
SQL 缓存 资源调度
实时计算 Flink版产品使用问题之在Flink on Yarn模式下,如何对job作业进行指标监控
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 分布式计算 关系型数据库
实时计算 Flink版产品使用问题之在使用FlinkCDC与PostgreSQL进行集成时,该如何配置参数
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用问题之在使用FlinkCDC与PostgreSQL进行集成时,该如何配置参数
|
4月前
|
消息中间件 存储 资源调度
实时计算 Flink版产品使用问题之在消费Kafka的Avro消息,如何配置FlinkKafka消费者的相关参数
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
关系型数据库 MySQL Java
实时计算 Flink版操作报错合集之udf是怎么定义接收和返回的数据类型的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
监控 Oracle 关系型数据库
实时计算 Flink版操作报错合集之在配置连接时,添加了scan.startup.mode参数后,出现报错。是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
884 0
|
2月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。