Spark 中 RPC 部分的涉及了几个类,有点晕,在此记录一下
1. RpcEndpoint: RPC的一个端点。给定了相应消息的触发函数。保证 `onStart`, `receive` and `onStop` 函数按顺序触发。
2. RpcEndpointRef: 一个远程的 RpcEndpoint
3. RpcEnv: RPC的环境。 RpcEndpoint 需要用一个名字在 RpcEnv 进行注册用于接收消息。RpcEnv 将处理从 RpcEndpointRef 或远程发来的消息,然后发送给相应的 RpcEndpoint 。
4. RpcAddress : 用主机+端口表示的一个 Rpc 地址。
5. Dispatcher: 消息收发者, 负责把消息路由给相应的 RPC 端点。
6. RpcEndpointVerifier : 验证 RpcEnv 中某个 RpcEndpoint 是否存在的 RpcEndpoint。
7. Inbox : 为一个 RpcEndpoint 存储消息并发送给这个 RpcEndpoint 的信箱
8. NettyRpcHandler: 把收到的 Rpc 消息分发给在 RpcEnv 注册过的 RpcEndpoint(通过 Dispatcher)。会保持所有与之通信的客户端。此类 NettyRpcEnv.scala 中。
9. TransportServer:高效的、底层流服务。此类中会真正启动 Netty 的服务端
10. TransportContext:包含了用于创建 TransportServer 和 TransportClientFactory的上下文,并且用于设置 Netty 的 Channel pipelines。
11. TransportRequestHandler: 注册在 Netty channel 上的 handler。处理从客户端发来的请求。
12. TransportResponseHandler: 注册在 Netty channel 上的 handler。处理从服务端返回的消息。