QueryableState
上述案例中,状态后端存储的状态数据我们是没法直接读取的,都是二进制流。Flink提供了一种获取运行时状态的机制,让我们可以实时获取到Job运行时的State。这就是可查询状态(Queryable State)服务,顾名思义就是允许用户从外部系统(如业务系统)中查询Flink作业内部的状态(State)。在一些需要给外部系统开放状态查询的场景可以使用此特性。
QueryableState组件
QueryableStateClient:客户端组件,可以独立于Flink集群运行,用于提交用户查询请求。
QueryableStateClientProxy:代理组件,运行在每个TaskManager上(即在Flink集群中),负责接收客户端的请求。客户端的查询请求通常带一个key,代理组件从JobManager处查得key所属的TaskManager,将客户端请求转发到该TaskManager上运行的QueryableStateServer中,并将用户查询的状态结果转发给客户端。
QueryableStateServer:状态查询组件,运行在每个TaskManager上,负责管理本地状态,处理客户端的查询。