Spark组件间通讯

一、Spark组件之间使用RPC机制进行通讯。RPC的客户端在本地编写并调用业务接口,接口在本地经过RPC框架的动态代理机制生成一个对应的实现类,在这个实现类中完成soket通讯、远程调用等功能的逻辑包装,而在RPC的服务端既编写业务接口也编写了具体的业务实现类,经过RPC框架以接口的方式暴露出来,供客户端远程调用。
Spark2.x以前使用的是Akka做为底层框架来实现Actor模型的,Spark2.x以后用Netty替换了Akka做为底层框架,来实现Actor模型(Akka底层用的也是Netty)。框架

BIO:客户端调用后一直等待服务端的执行返回,客户端才能继续执行自生在调用点位后面的逻辑,形成客户端逻辑的阻塞。
NIO:客户端调用后,继续执行调用点位后的本地逻辑,经过事件监听等机制得到服务端的返回,客户端无阻塞,可是客户端须要付出额为的精力去实时监听服务端的执行是否完毕。
AIO:客户端调用后,继续执行调用点位后的本地逻辑,服务端主动将结果发送到共享的地方,客户端灵活取用,客户端无阻塞也无额外开销,(服务端一般使用call-back等机制实现对客户端的通知、Feature来约定共享数据区)可是目前Linux不支持AIO,Windows支持。
*
二、Actor模型:每个通讯端点都拥有一对
inbox-outbox**,任何信息的接收都经过inbox,一样任何信息的发送都必须经过outbox,多条信息就在box中排序处理。代理

相关文章
相关标签/搜索