所有集群节点上的有状态服务
Stateful service on all cluster nodes
这似乎是一个显而易见的问题,但答案暗示了我。如何指示我想要集群中所有节点上的有状态服务实例?对于无状态服务,它就像使用 -1 作为实例计数一样简单,但有状态不支持。
我正在将我现有的无状态 webapi 服务转移到有状态,这样我就可以将我对 Redis 缓存的使用替换为可靠的字典。因为它是一个在外部和 Azure 负载均衡器前面可见的服务,所以我需要在所有实例上使用该服务 运行。
我错过了什么?
由于它是有状态的,因此只有一个 node/VM 会在集群中分配一个主副本和两个辅助副本。主节点将维护 read/write 到可靠的 dictionaries/queues 并更新副本(事务)。这就是它保持数据的可靠性、可用性和持久性的方式。然后,您可以从有状态服务调用无状态服务来处理这些数据。您可以拥有所有无状态服务(部署在集群中的所有 nodes/VM 中)execute/process 这些数据。
无状态实例可以有 -1,因为它们可以在不影响状态的情况下创建和销毁。
有状态服务的分区数不是动态的。它决定了数据如何跨节点分片。一旦您选择了 X 个分区,您就无法更改该数字,而不必自己处理对状态的影响。
替代方法:
您可以在所有节点上添加无状态服务(作为网关),运行,并从它们调用有状态服务的分区。
对有状态服务进行分区将提高可伸缩性。例如,您可以对用户 group/tenant/subscriptionlevel 等进行分区
这似乎是一个显而易见的问题,但答案暗示了我。如何指示我想要集群中所有节点上的有状态服务实例?对于无状态服务,它就像使用 -1 作为实例计数一样简单,但有状态不支持。
我正在将我现有的无状态 webapi 服务转移到有状态,这样我就可以将我对 Redis 缓存的使用替换为可靠的字典。因为它是一个在外部和 Azure 负载均衡器前面可见的服务,所以我需要在所有实例上使用该服务 运行。
我错过了什么?
由于它是有状态的,因此只有一个 node/VM 会在集群中分配一个主副本和两个辅助副本。主节点将维护 read/write 到可靠的 dictionaries/queues 并更新副本(事务)。这就是它保持数据的可靠性、可用性和持久性的方式。然后,您可以从有状态服务调用无状态服务来处理这些数据。您可以拥有所有无状态服务(部署在集群中的所有 nodes/VM 中)execute/process 这些数据。
无状态实例可以有 -1,因为它们可以在不影响状态的情况下创建和销毁。
有状态服务的分区数不是动态的。它决定了数据如何跨节点分片。一旦您选择了 X 个分区,您就无法更改该数字,而不必自己处理对状态的影响。
替代方法:
您可以在所有节点上添加无状态服务(作为网关),运行,并从它们调用有状态服务的分区。
对有状态服务进行分区将提高可伸缩性。例如,您可以对用户 group/tenant/subscriptionlevel 等进行分区