Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Azure service fabric 用于处理servicebus队列的有状态或无状态服务_Azure Service Fabric_Azure Servicebus Queues_Service Fabric Stateful - Fatal编程技术网

Azure service fabric 用于处理servicebus队列的有状态或无状态服务

Azure service fabric 用于处理servicebus队列的有状态或无状态服务,azure-service-fabric,azure-servicebus-queues,service-fabric-stateful,Azure Service Fabric,Azure Servicebus Queues,Service Fabric Stateful,我有一个启用会话的Azure servicebus队列。我需要某种形式的服务,可以从队列中读取并处理它们,并将结果保存(在内存中以便以后检索)。我们在当前体系结构中使用azure servicefabric。关于选择有状态服务还是无状态服务,我没有什么问题 如果我使用有状态服务,那么根据我所了解的文档,服务将在1个主节点(假设1个分区)和2个活动辅助节点上运行。这意味着,如果我有一个10节点的服务结构集群,那么这个有状态的服务将主要只利用一个节点(VM) 因此,如果我向这个有状态服务添加一个侦听

我有一个启用会话的Azure servicebus队列。我需要某种形式的服务,可以从队列中读取并处理它们,并将结果保存(在内存中以便以后检索)。我们在当前体系结构中使用azure servicefabric。关于选择有状态服务还是无状态服务,我没有什么问题

如果我使用有状态服务,那么根据我所了解的文档,服务将在1个主节点(假设1个分区)和2个活动辅助节点上运行。这意味着,如果我有一个10节点的服务结构集群,那么这个有状态的服务将主要只利用一个节点(VM)

因此,如果我向这个有状态服务添加一个侦听器来读取队列中的消息,那么主节点上的服务将从队列中读取消息,而所有其他9个节点将无法使用。这是正确的吗

然而,如果我使用无状态服务,我可以在所有10个节点上创建实例,所有节点都可以侦听队列中的消息并并行处理它们。但是,我将放弃保存结果的选项

请告知

因此,如果我向这个有状态服务添加一个侦听器来读取队列中的消息,那么主节点上的服务将从队列中读取消息,而所有其他9个节点将无法使用。这是正确的吗

这是正确的。对于有状态服务场景,只有主副本将执行其侦听器,并且工作将完成。其他副本可以在只读模式下使用,但它们不会将任何内容写入可靠的集合

然而,如果我使用无状态服务,我可以在所有10个节点上创建实例,所有节点都可以侦听队列中的消息并并行处理它们

没错。无状态服务可以并行执行它们的工作,并且不会持久化任何状态。这也是为什么乳清没有可用于此服务结构模型的可靠收集的原因

但是,我将放弃保存结果的选项

不一定是真的。您仍然可以将数据保存在集中/共享的数据库中,就像您在过去使用无状态解决方案(例如云服务或Azure WebApp)时所做的那样


你应该问自己你在解决什么问题。如果您有数据切分,则stavite更有意义。如果您没有数据分片和/或需要扩展处理能力,而不是扩展,那么无状态是一种更好的方法

谢谢Sean,我正在努力避免将结果写入外部存储(延迟和维护),我想我可以使用ServiceFabric功能将结果存储在内存中,以备以后使用。看起来我最好的选择是坚持使用无状态来处理队列,并创建另一个有状态服务来存储/检索结果。这有意义吗?还是我让它变得过于复杂了?有了SF的可靠收集,请记住它应该只作为热门数据使用。作为热数据,它需要存储在冷库中,以便在出现问题时进行备份/恢复。