簡體   English   中英

Akka是否根據可用資源來規范參與者?

[英]Does Akka regulate actors based on available resources?

我有一組數據庫文檔(幾千個),我想為其運行一些數據遷移活動。 這些文檔中的每一個都包含對Windows文件系統中不同文件的引用。 這些文件存儲在通過共享文件夾訪問的文件服務器中。 我想做的是將文件移動到文件系統中的其他位置,然后根據文檔中的屬性重新排列它們。

我想到了以下設計:

  1. 擁有一個查詢數據庫的參與者,並且每個文檔產生一個參與者
  2. 這些參與者中的每一個都將負責將其相關文件復制到新位置,並負責處理任何例外情況。
  3. 當每個參與者完成任務時,它將把結果(成功/失敗)通知中心參與者。

這是幼稚的設計嗎? 我應該限制創建的角色多少,還是Akka根據處理器的可用性調節分配的資源? 文件系統方面是否存在任何問題,同時有太多請求處於活動狀態?

akka的默認線程池/執行上下文/調度程序每個內核都有一個線程,移動文件可能是一項阻塞操作,因此在給定的任何時刻,您移動的文件數僅與擁有內核的一樣多,在此期間,其他角色將被調用。

您可以將調度程序配置為使用更多線程來獲取更多的並行活動,或者將文件移動actor放置到不干擾其他actor的特定調度程序中。

也許更好的主意是將文檔視為通過系統傳遞的消息,最后,您將每個文檔枚舉為一條消息,將其發送給actor,該actor解析文件中的屬性,然后將其轉發給執行此操作的actor。實際移動。 這樣就可以根據磁盤的吞吐量等來決定有多少個解析器-actor實例和多少個move-actor實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM