当前位置: 首页 > 知识库问答 >
问题:

多线程方法与Akka行动者模型

孙修德
2023-03-14

一个基于Actor的HttpServer会对同样的问题做出怎样的反应?。是否所有请求都排在委托的参与者前面,以按顺序处理它们并将消息发送给其他参与者?。如果是这样的话,这就是我不明白actor怎么能比线程模型提供更好的性能的一点,因为仅仅1个actor按顺序处理20个请求,并不能比10个线程并发处理20个请求更快。

我想了解的是,当多个请求同时出现时,actor是如何反应的?,而不是actor如何在邮箱中处理和排队消息,它已经在文档中显示了很多。有人能模拟一下actor在这个例子中的工作步骤吗?

共有1个答案

武骁
2023-03-14

让我试着给出一个有点笼统的答案,我希望在高水平上为你澄清事情。

请求被分配给线程,直到请求被满足。线程可能会阻塞,但不一定会被释放以处理另一个请求。Performanct http服务器可以复制在actor模型中发现的行为类型(基于消息的多线程流),直到通常调用用户代码为止。

通过参与者处理路由解析、处理请求和呈现响应(作为示例,结果可能不同),来对请求进行消化。在沿着这个流程的各个点,线程可以被分配来处理不同的请求。理论上,所有20个请求都可以通过actor模型移动,但只有10个请求在任何时候都是活动的。

 类似资料:
  • 问题内容: 我想看看使用多线程生产者而不是单线程生产者会有多少时间差异。我在本地计算机上设置了ActiveMQ,编写了生产者类,该类将初始化并在其构造函数中启动JMS连接。我将消息限制设置为3M,将所有消息推送到ActiveMQ大约花费了50秒。我只发送了一个字符串“ hello world” 3M次。 然后,我使用了相同的生产者对象(一个连接但有多个会话),并使用线程大小为8的ExecutorS

  • 我刚才比较了scala Actor和java线程的性能。 我很惊讶地看到了这种差异,我观察到我的系统最多只能生成2000个线程(一次活动),但在同一个系统中,我只能生成500,000个Scala参与者。

  • 有两个测试类,每个都有一个使用并行模式下的数据提供程序的测试方法。 测试运行的持续时间是使用BeforeSuite和AterSuite中确定的时间计算的。 案例1-在没有任何线程并行设置的情况下运行。 这给出了以下结果。 前两行从属于FirstNg类的dataprovider开始。这将成对重复(等于数据提供程序线程计数的值),然后使用SecondNg类的数据提供程序。 案例2-使用方法的线程并行设

  • 对于我正在构建的新akka应用程序,我有一个设计挑战。问题/挑战是:在客户端,我制作了一个简单的actor,它发送一个请求,然后使用been()来等待正确的服务器应答,当然还包括一条超时消息,以防我在正确的时间内没有得到应答。然而,有趣的是在服务器端。这里我有以下结构: 参与者A(配置为循环路由器)此路由器正在接收来自客户端的所有请求。 参与者A然后将消息转发给参与者A1、A2。。。Ax都是在演员

  • 我正在尝试使用类型化执行器版本2.6.3和akka http版本10.1.11,而在非类型化执行器中都运行良好,现在我得到了编译错误

  • 问题内容: 我编写了一个单一的Kafka使用者(使用Spring Kafka),该使用者从单个主题中读取内容,并且是使用者组的一部分。消耗完一条消息后,它将执行所有下游操作,并移至下一个消息偏移。我将其打包为WAR文件,并且我的部署管道将其推送到单个实例。使用部署管道,我可以将该工件部署到部署池中的多个实例。 但是,当我希望多个消费者作为基础架构的一部分时,我无法理解以下内容: 实际上,我可以在部