4.4 Spark通信模块

Spark的Cluster Manager可以有Local、Standalone、Mesos、YARN等部署模式。为了研究Spark的通信机制,本节介绍Standalone模式,其他模式可以对照此模式进行类比,感兴趣的读者可以进一步通过源码了解。

下面介绍分布式通信的几种方式。

(1)RPC(Remote Produce Call)

RPC是远程过程调用协议,基于C/S模型调用。过程大致可以理解为本地分布式对象向本机发请求,不用自己编写底层通信本机。通过网络向服务器发送请求,服务器对象接收参数后,进行处理,再把处理后的结果发送回客户端。

(2)RMI(Remote Method Invocation)

RMI和RPC一样都是调用远程的方法,可以把RMI看做是用Java语言实现了RPC协议。RPC不支持对象通信,支持对象传输,这也是RMI相比于RPC的优越之处。

(3)JMS(Java Remote Service)

JMS是在各个Java类之间传递消息的标准。其支持P2P和pub/stub两种消息模型,即点对点和发布订阅两种模型。其优点在于:支持异步通信、消息生产者和消费者耦合度低。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无须专用连接来连接它们。

(4)EJB(Enterprise Java Bean)

EJB是Java EE中的一个规范,该规范描述了分布式应用程序需要解决的事务处理,安全、日志、分布式等问题,与此同时,Sun公司也实现了自己定义的这一个标准,相当于自己颁布一个标准。EJB是一个特殊的Java类,按照Java服务器接口定义,放在容器里可以帮助该类管理事务、分布式、安全等,只有大型分布式系统才会用到EJB,一般小型程序不会用到。

(5)Web Service

Web Service是网络间跨语言、跨平台的分布式系统间的通信标准。传输XML、JSON等格式的数据,应用范围较广。