簡體   English   中英

Akka演員一次處理一條消息

[英]Akka actors processes one message at a time

Akka actor一次只能處理一條消息,因此我們不必擔心並發性。

考慮一下我有一個披薩店的系統。

設計就是這樣

1)Webservice 
2)Akka ecosystem with actors like PizaaCreater, DeliveryHandler 
3)Web service accepts ther order and passes to PizzaCreater,PizzaCreater creates pizza and passes it to DeliveryHanlder.

現在,因為只有一個PizzaCreater和DeliveryHandler實例,這會減慢整個系統的速度。

1)Should i create multiple PizzaCreaters and DeliveryHandler?
2)How will CustomerService pass order to PizzaCreater with minimum load or how would PizzaCreater pass the pizza to DelivieryHandler with minimum load then?
3)Is creating multiple instance of PizzaCreaters / DeliveryHandler ok?
  1. 如果“比薩餅創建”是一項阻止操作(使用網絡/數據庫),請使用PizzaCreatorWorkers創建路由器(工作程序/線程數取決於您的方案)。 如果“披薩創建”是非阻塞的-只需為每個請求創建一個actor。 交付同樣:如果交付受阻,則使用固定數量的DeliveryHandles創建路由器,否則只需創建一個actor並將其傳遞給“ pizza”即可。

  2. 在所有情況下,訂單傳遞都應通過非可變消息完成:將訂單傳遞到鏈下后,您不應修改訂單。 您不必擔心“負載”,因為傳遞消息是Akka所做的,因此它非常有效-您只需在參與者之間傳遞引用。

  3. akka文檔指定akka系統旨在處理數百萬個參與者,因此,只要這是應用程序邏輯所要求的,就不必擔心參與者的“多個實例”。

從akka.io主頁:

在一台機器上達到5000萬msg / sec。 內存占用少; 每GB堆約250萬個參與者。

暫無
暫無

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

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