Flink Sql Gateway源码分析

本文深入分析Flink SQL Gateway的源码,包括整体架构、请求流程、会话管理、任务提交、任务状态查询及数据拉取。Sql Gateway作为任务网关,通过SessionManager处理并发请求,维护会话与任务的关联性,将SQL转换为DAG图提交到Flink集群执行。支持创建会话、关闭会话、任务提交、状态查询、数据拉取等功能。
摘要由CSDN通过智能技术生成

Flink Sql Gateway是Flink集群的“任务网关”,支持以rest api的形式提交查询、插入、删除等任务。
在这里插入图片描述

官网推荐与Flink jdbc driver搭配使用,不过jdbc driver限制了很多功能,如果自己开发数据平台,最好还是直接使用sql gateway。想要透彻的使用sql gateway,需要了解一下问题:

1 如何处理并发请求?多个提交怎么处理?

2 如何维护多个sql之间的关联性?

3 sql字符串如何提交到集群形成代码

4 sql-gateway都支持哪些功能?

1. 整体架构

Sql Gateway其实内部说白了就是一个SessionManager会话管理器以及一个SqlGatewayEndpoint网络服务器。
在这里插入图片描述

如果读过flink 源码你就会发现,flink-sql-gateway 是对Flink Table模块中的flink-sql-client 的二次开发,没多大变化。 其中SqlGatewayEndpoint是基于flink runtime.rest.RestServerEndpoint实现的Netty服务器,通过统一的架构设计,实现了多种handler,如创建会话、提交任务、任务状态查询、任务取消、拉取数据等。handle 处理细节可以参考LocalExecuter。所有handler使用公用的SessionManager进行会话管理。SessionManager中维护了一个sessionId和Session的Map,考虑到并发问题,底层采用ConcurrentHashMap作为并发存储。
在这里插入图片描述

Session是具体的会话,如果使用RestAPI,则首先需要通过createSession创建session,然后只要指定为该sessionId的请求,都会在一个Session中执行。

所有的提交的任务大体可以分成两类,JobOperation和非JobOperation。JobOperation就是需要提交到Flink集群执行的任务,如select 和 insert;非JobOperation就是不需要提交到集群执行的操作,如create view, create table, drop table等。因此提交到sql gateway的所有任务,会按照sessionId分组,挨个任务执行,当为select 或者 insert时,加入到Session内部的jobOperations集合中,同样使用ConcurrentHashMap存储,目的是为了支持并

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼e族

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值