Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Akka actors一次处理一条消息_Java_Akka_Reactive Programming - Fatal编程技术网

Java Akka actors一次处理一条消息

Java Akka actors一次处理一条消息,java,akka,reactive-programming,Java,Akka,Reactive Programming,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 DeliveryHanl

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?
  • 如果“pizza创建”是一个阻塞操作(使用网络/db),请使用PizzaCreatorWorkers创建一个路由器(工作线程/线程的数量取决于您的场景)。如果“pizza创建”是非阻塞的,那么只需为每个请求创建一个参与者。对于传送,同样的事情:如果传送阻塞,创建一个具有固定数量传送句柄的路由器,否则只需创建一个参与者并将其传递给“pizza”

  • 在所有情况下,订单传递都应该通过不可变的消息来完成:一旦将订单传递到链中,就不应该修改订单。您不应该担心“负载”,因为传递消息是Akka所做的,所以它非常有效——您只需在参与者之间传递引用

  • akka文档指定akka系统设计用于处理数百万参与者,因此不要担心参与者的“多个实例”,只要这是应用程序逻辑所需要的

  • 从akka.io主页:

    在一台机器上每秒5000万个味精。内存占用小~每GB堆有250万个参与者

  • 如果“pizza创建”是一个阻塞操作(使用网络/db),请使用PizzaCreatorWorkers创建一个路由器(工作线程/线程的数量取决于您的场景)。如果“pizza创建”是非阻塞的,那么只需为每个请求创建一个参与者。对于传送,同样的事情:如果传送阻塞,创建一个具有固定数量传送句柄的路由器,否则只需创建一个参与者并将其传递给“pizza”

  • 在所有情况下,订单传递都应该通过不可变的消息来完成:一旦将订单传递到链中,就不应该修改订单。您不应该担心“负载”,因为传递消息是Akka所做的,所以它非常有效——您只需在参与者之间传递引用

  • akka文档指定akka系统设计用于处理数百万参与者,因此不要担心参与者的“多个实例”,只要这是应用程序逻辑所需要的

  • 从akka.io主页:

    在一台机器上每秒5000万个味精。内存占用小~每GB堆有250万个参与者


    您可以创建同一类型的多个参与者,并使用路由器传播工作:。邮箱最小的一个配置为akka.routing.smallestMailboxRoutingLogic您可以创建多个相同类型的参与者,并使用路由器传播工作:。邮箱最小的配置为akka.routing.SmallestMailboxRoutingLogic