如图示,这个通讯栈上面确定了一些 event 来提供给开发者进行自己的实现。
首先,最上面这层是 Source Event,留给开发者自己去定义一些客户化的操作。比如假使现在设计的一个 Source,可能 reader 在某些条件下可能要暂停读取,那么 SplitEnumerator 可以通过这种 Source event 的方式发送给 Source Reader。
其次,再下面一层分别是叫 Operator Coordinator,算子的协调者。它和真正去执行任务的算子通过 Operator Event 算子事件进行沟通的。我们已经事先定义好了一些算子事件,如添加分片、通知我们的 leader 没有新的分片了等。这些对于所有的 Source 都通用的事件,是在 Operator Event 这一层来进行抽象的。
Address Lookup 是用来定位消息应该发送给哪一个 Operator 的。因为 Flink整个作业执行起来后会有一个加一个有向无环图的。不同的算子可能运行在不同的Task Manager 上面,那么怎么去找到对应的 task、对应的算子便是这一层的任务。
由于网络通信的存在,Job Master 和 Task Executor 之间有一个 RPC Gateway。所有的 Event 最终都会通过 RPC Gateway、通过 RPC 调用的方式来进行网络传输。
资料来源:《Apache Flink 必知必会》,下载链接:https://developer.aliyun.com/topic/download?id=1189
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。