最近了解了Azure Service Fabric,并且似乎是将扩展应用程序开发为一堆微服务的好方法。它告诉我们,我们需要拥有无状态前端Web服务和有状态分区内部服务。内部服务scale by partitioning the data。
但是加载前端服务会发生什么?除了依靠内部的有状态服务之外,他们无所事事的可能性很小。我们还应该在前端服务之前使用负载均衡器吗?如果是这样,我们是否可以通过使用OWIN或任何其他网络主机的Service Fabric的无状态模型来托管相同的内容?
这个问题已在SO中提出,但作为评论。由于最初的问题不同,它没有得到答复。 Azure Service Fabric usage
答案 0 :(得分:11)
是的,您肯定也希望在无状态服务中分配负载。关键的区别在于,由于它们是无状态的,因此它们可以循环方式处理请求。
有状态服务具有映射到服务状态的各个块的分区,而无状态服务仅具有实例,这些实例是彼此相同的克隆,仅在不同节点上。您可以在应用程序清单中的默认服务定义中设置实例数。例如,此声明将确保群集中始终有5个无状态服务实例运行:
<Service Name="Stateless1">
<StatelessService ServiceTypeName="Stateless1Type" InstanceCount="5">
<SingletonPartition />
</StatelessService>
</Service>
您还可以将InstanceCount设置为-1,在这种情况下,Service Fabric将在每个节点上创建无状态服务的实例。
Azure负载均衡器会在您的每个实例中循环传入流量。不幸的是,现在还没有一种在单箱环境中模拟这种方法的好方法。