做者 | 白松apache
注:本文爲原創,引用轉載需與數瀾聯繫。服務器
功能:Basic service interface shared by both CentralizedServiceMaster and CentralizedServiceWorker.this
功能:At most, there will be one active master at a time, but many threads can be trying to be the active master.線程
功能:All workers should have access to this centralized service to execute the following methods.3d
**功能:**Zookeeper-based implementation of CentralizedService.對象
功能:ZooKeeper-based implementation of CentralizedServiceMaster.blog
功能:ZooKeeper-based implementation of CentralizedServiceWorker.繼承
BspServiceWorker類有WorkerClient和WorkerServer實例,分別做爲IPC通訊的客戶端和服務器端,經過Netty來發送數據。WorkerClient實例實際爲NettyWorkerClient對象,WorkerServert實例實際爲NettyWorkerServer對象。接口
NettyWorkerClient implements WorkerClient接口,NettyWorkerServer implements WorkerServer接口。同步
NettyWorkerServer類的構造方法中建立一個NettyServer對象,用於底層的IPC的通訊,還有一個ServerData對象,做爲數據實體。ServerData中包含該Worker的partitionStore、edgeStore、incomingMessageStore、currentMessageStore、彙集值等。
NettyWorkerClient類的構造方法中建立一個NettyClient對象,用於底層的IPC的通訊,做爲客戶端。
功能:用於加載頂點或邊 輸入splits,每一個線程都有一個WorkerClientRequestProcessor實例(實爲 NettyWorkerClientRequestProcessor對象),負責向遠端的worker發送數據。
NettyWorkerClientRequestProcessor對象用於發送的WorkerClient對象就是BspServiceWorker裏面的WorkerClient對象。
VertexInputSplitsCallable類中的readInputSplit()方法用來從split中讀取頂點的信息,而後調用NettyWorkerClientRequestProcessor對象的sendVertexRequest()方法把頂點發送到它所屬的Partition上。
在該對象中完成「計算-通訊-同步」的過程。每一個線程都有一個WorkerClientRequestProcessor實例(實爲 NettyWorkerClientRequestProcessor對象),負責向遠端的worker發送數據。