[flink-002] flink的rpc机制

1.rpc接口

flink的rpc机制基于akka,源码位于flink项目路径flink-runtime/src/main/java/org/apache/flink/runtime/rpc。

关于akka,可以参考本博客的https://blog.youkuaiyun.com/lizhe_dashuju/article/details/98040346

akka的通信机制本质相当简单,以本地通信为例,在本地创建一个actor,调用它的tell函数,给它传一个对象,通信结束。这个对象可以是String,也可以是用户自定义的对象。actor收到对象后,进行处理,有多种可能,可以创建新的actor,或发一个新消息给其他actor,或把新消息发给自己,如果执行出错,还可以把当前消息延迟发给自己重新处理,等等诸如此类,用法只受限于想象力。

如果需要actor输出一个返回值,不调用tell函数,调用ask函数。

如果是远程通信,创建一个远程actor,这个actor有远程主机的ip地址和端口号,通信过程一切不变,封装后一切行为跟本地调用一样。

RpcEndpoint是RPC通信各节点的抽象基类。它有三个重要的跟RPC相关的函数:

1. runAsync函数:异步执行一个Runnable接口对象。Runnalbe接口没有返回值。

2.secheduleRunAsync函数:延时执行一个Runnable接口对象。

3.callAsync函数:异步执行一个Callable接口对象。Callable接口是有返回值的。

这三个函数,都是由RpcEndpoint的成员变量rpcServer执行的,rpcServer实现了RpcServer接口。注意,rpcServer由一个RpcService接口对象启动,启动参数是RpcEndpint对象自身this。窃以为,这几个接口之间的关系有点绕,结构不清晰,画蛇添足,可能是兼容早期设计的结果。

FencedRpcEndpoint

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值