【Flink源码实战(一)】给Flink增加一个REST API
本文参考了flink committer tison的文章,基于flink 1.13版本源码改动实现。
一、概述
https://ci.apache.org/projects/flink/flink-docs-master/docs/ops/rest_api/
Flink官方实现了大量的REST API接口,有用于Flink UI展示数据、也用于各自监控面板。这些REST API的webserver作为JobManager
的一部分在运行。默认端口是8081,可以通过flink-conf.yaml
的rest.port
参数进行配置。
在有多个JobManager
的情况下(HA场景下),每个JobManager
将运行自己的REST API实例,而由被选为leader的JobManager
实例提供有关已完成和正在运行的作业的信息。
二、开发指南
REST API 位于flink-runtime
项目下,核心实现org.apache.flink.runtime.webmonitor.WebMonitorEndpoint
(因为Flink早期REST API都是用于监控,所以命名是WebMonitorEndpoint。现在其工作职能还包含一些任务启停等非监控场景),其主要是负责server实现和请求路由。