簡體   English   中英

何時創建Akka演員

[英]When to create an Akka Actor

我有一個REST服務,僅服務一個POST請求。 我想使用一個演員來處理請求。 但是我不知道我應該創建一個actor並使用該actor派生所有請求,還是應該在每次請求時創建一個actor。 這些選擇的優缺點是什么。 另外,當我創建一個參與者並使用該參與者處理所有請求時,並行執行如何實現。 它肯定看起來像順序執行。 我也想了解這一點。

如果使用一個Actor,則Actor請求將排隊在actor郵箱中,並由actor逐一處理。 這是順序的,不建議這樣做。

那就是為什么這么說

一個演員不是演員。

創建一個管理其他演員的經理演員。 由於角色非常便宜,因此您可以為每個請求創建一個角色,而不會出現任何問題。 使用將來進行數據庫交互和其他繁重的計算,並使用將來的直接結果來使用pipeTo模式請求處理pipeTo

僅使用參與者來划分和分配工作,並使用期貨來進行計算密集型工作。

我同意@pamu所說的。 演員很便宜。 但是請注意,如果您要使用單例Actor,請不要使其有狀態,否則會造成麻煩。

而且,如果您要使用期貨做大量的工作(應該做)。 確保為他們提供特定的ExecutionContext / Dispatcher。 使用全局調度程序或ExecutionContext不好。

或者,在您擁有的每個api中,創建一個特定的調度程序來控制將在這種終結點/ api上工作的Actor的數量。

例如,您有“ / get / transactions”

指定只會產生此#線程的調度程序。 對於此api。

這樣做的好處是您可以控制應用程序使用的線程和資源的數量。 當涉及到交通繁忙時。 這是一個好習慣。

我將為每個請求創建一個演員,並使用“告訴”模式將工作委派給新創建的演員。 如果您使用的REST框架支持完成來自其他角色的請求(Spray,Akka-HTTP則支持),那么您可以完成來自此新角色的請求。 這樣,您的請求處理角色便可以自由處理下一個請求。

我發現是一個很好的資源,解釋了Ask&Tell和每個請求者的利弊。 對您有幫助。

暫無
暫無

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

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