繁体   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