在我與Akka的日常工作中,我最近寫了一個字數映射表簡化示例。 本示例實現了Map Reduce模型,該模型非常適合橫向擴展設計方法。
流
- 客戶端系統(FileReadActor)讀取文本文件,并將每一行文本作為消息發送給ClientActor。
- ClientActor具有對RemoteActor的引用(WCMapReduceActor),并且消息傳遞到遠程Actor
- 服務器(WCMapReduceActor)獲取消息。 Actor使用PriorityMailBox來確定消息的優先級并相應地過濾隊列。 在這種情況下,PriorityMailBox用于在mapreduce請求之間隔離消息,并從聚合角色獲取結果列表(DISPLAY_LIST)消息。
- WCMapReduceActor將消息發送到MapActor(使用RoundRobinRouter調度程序)以映射單詞
- 映射單詞后,將消息發送到ReduceActor(使用RoundRobinRouter調度程序)以減少單詞
- 精簡后的結果將發送到Aggregate Actor,后者對結果進行內存內聚合
下圖詳細說明了程序的結構

該程序的代碼庫位于以下位置-https://github.com/write2munish/Akka-Essentials 。
有關MapReduce的更多信息,請閱讀MapReduce for dummies 。
參考: Akka Essentials博客上的JCG合作伙伴 Munish K Gupta提供的Akka 字數統計MapReduce 。
翻譯自: https://www.javacodegeeks.com/2012/04/word-count-mapreduce-with-akka.html