Spark 中的 RPC 的幾個類
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。處理從服務端返回的訊息。