AKKA在内存中的尝试是否与Azure服务总线队列在磁盘上的尝试相同?

AKKA在内存中的尝试是否与Azure服务总线队列在磁盘上的尝试相同?,azure,akka,azureservicebus,akka.net,Azure,Akka,Azureservicebus,Akka.net,像AKKA.net这样的参与者模型给表带来了许多好处,如可伸缩性、反应性、内存缓存等。。。当我尝试将AKKA与进行比较时,我发现除了内存缓存的好处外,Azure Service Bus的主要好处几乎相同 在生产环境中,AKKA需要多个具有更多内存的VM,处理能力可以在内存中处理数百万参与者。对于Azure服务总线队列,不需要强大的主机。即使我们使用actor模型,也不需要进行监督或创建actor系统来管理数以百万计的actor。Azure服务总线的可伸缩性是自动的 从长远来看,我认为Azure服

像AKKA.net这样的参与者模型给表带来了许多好处,如可伸缩性、反应性、内存缓存等。。。当我尝试将AKKA与进行比较时,我发现除了内存缓存的好处外,Azure Service Bus的主要好处几乎相同

在生产环境中,AKKA需要多个具有更多内存的VM,处理能力可以在内存中处理数百万参与者。对于Azure服务总线队列,不需要强大的主机。即使我们使用actor模型,也不需要进行监督或创建actor系统来管理数以百万计的actor。Azure服务总线的可伸缩性是自动的

从长远来看,我认为Azure服务总线队列是经济高效的。随着负载的增加,不需要IT管理员来管理它。也不需要具有多核的强大系统


AKKA actor模型是否适用于具有多核系统的内部数据中心,而不适用于在考虑成本效益时可以使用Azure服务的应用程序?

我想说,AKKA.net的邮箱组件的工作与Azure服务总线队列(或MSMQ)的工作类似也许在原则上是相似的。如果服务总线队列(或MSMQ)将持续存在(或者在MSMQ的情况下,将持续存在队列-而不是内存队列),则发送到存储器和Akka邮箱的即时消息将不会保留

但这就是相似之处的终结。。。服务总线没有参与者、处理器和分发的概念——它只是一个消息传递解决方案

如果您希望实现可能以持久性(和事务性“参与者”)为目标的参与者,那么我建议您不要使用Akka.net,而是使用MassTransit或nServiceBus。两者都是功能强大的产品,虽然它们的性能无法与Akka.net媲美(MT和nSB序列化并持久化到磁盘,但Akka.net没有)它们非常强大,并且在参与者/节点崩溃时能够透明地恢复,因为整个工作项将在事务中,这将导致消息作为默认行为重新插入/重新处理

长期以来,我一直认为Azure Table Storage是一个很好的事件存储,但如果您希望保留命令记录,我会使用服务总线(MassTransit,nServiceBus)作为替代。对我来说,这感觉就像您需要更多的“事务性”如“近实时”和“多处理器”


我个人的看法是,

我认为你在比较苹果和桔子。Akka(从未使用过它,但只是读过它)是一个演员模型框架。服务总线用于持久消息传递和发布/订阅。另外:没有正确的答案,因为您正在比较许多主观的或特定于项目的东西:功能集、定价等。我认为这是一个征求意见的问题。根据此链接,AKKA使用持久存储提供消息的持久性。对我来说,如果我们将业务领域分开,两者都能提供相同的基础设施优势。在参与者模型中,域可以作为参与者存在,基础设施的好处也内置于其中。在Azure SB的案例中,没有业务域。我的观点是,您正在将参与者模型框架与消息传递基础设施服务进行比较。它们是不可互换的,因为它们提供不同的功能,一个是带有SLA的服务,等等。您想知道akka是否适合使用,这是一个离题的问题,因为这是一个意见问题。如果它适合您的应用程序,请使用它。此外,服务总线在Windows Server中工作。你应该用这个吗?再一次,由你决定,具体应用程序。我使用运行在Windows上的AKKA.NET,它将在Azure上运行。坚持是我一直在努力的方向。啊,那将是一个不同类型的问题考虑到akka具有文件系统持久性,Azure具有基于SSD和非SSD的持久连接磁盘存储,这一点很容易回答。我们在RabbitMQ之上使用MassTransit也有类似的用途,这非常棒。非常高性能和高度可扩展性。