主從模式類似于網格計算模式,其中控制節點將工作分配給其他節點。 想法是利用網絡上的節點進行計算。 SETI @ Home是使用此模型的最早的先驅之一。
我建立了一個類似的示例,不同之處在于工作節點在遠程節點上啟動,工作節點向Master(WorkServer)注冊,然后隨后開始處理工作包。 如果沒有在Master(WorkServer)上注冊的工人從屬服務器,則主服務器將等待工人進行注冊。 工人可以隨時注冊,并從那里開始獲取工作包。

該示例演示了WorkerActor系統如何發送注冊請求。 RegisterRemoteWorker接收該請求,并將其轉發到JobController,在此更新RoundRobinRouter以獲得新的工作程序信息。 WorkScheduler定期向JobController發送請求,JobController然后將數據包發送給所有注冊的工作人員。
對于遠程角色死后如何處理故障或如何重新處理尚未處理的數據包,該示例未實現容錯功能。 同樣,在某些情況下,遠程工作人員可能希望在處理一定數量的數據包后關閉,然后他們可以指示主機停止給他們工作。 我將盡快添加容錯功能!
更新 :更新了代碼庫以處理工作程序關閉。 如果遠程角色死掉或關閉,則JobController使用遠程角色偵聽器檢測到故障轉移,并更新路由器。
本方案的代碼庫可在以下位置- https://github.com/write2munish/Akka-Essentials的GridPatternExample下
參考:來自Akka Essentials博客的JCG合作伙伴 Munish K Gupta在Akka中 實現了主從/網格計算模式 。
翻譯自: https://www.javacodegeeks.com/2012/05/implementing-master-slave-grid.html