Azure Service Fabric的使用

3

Service Fabric刚刚在build大会上宣布。我正在阅读关于它的稀少文档,我有一个问题。

我正在评估Service Fabric用于托管CRUD微服务,这些微服务目前是使用ASP.NET WebApi构建的。

Service Fabric是否专注于托管接收数据、处理数据并返回结果的小型功能片段,而不是托管CRUD WebApi类型的应用程序?

3个回答

10

Service Fabric可以创建无状态和有状态微服务。

顾名思义,如果一个无状态服务实例所维护的状态丢失,那么如果该节点宕机,新的、全新的实例会在集群中的其他位置被重新创建。

有状态服务提供了持久化状态的能力,而不依赖于外部存储。在Reliable Collection中存储的任何数据都将自动复制到集群中的多个节点上,确保状态对故障具有韧性。

常见的模式是使用无状态服务作为面向客户端的应用程序网关,然后让该服务将流量定向到应用程序的分区状态服务中。这样可以将解决分区的工作隐藏起来,允许客户端以所有请求针对一个逻辑端点。

请查看WordCount示例以了解其工作原理的示例。WordCount.WebService无状态服务充当应用程序的前端。它只是根据传入的请求解析分区,然后将其发送出去。WordCount.Service有状态服务(基于单词的第一个字母进行分区),立即将这些传入的请求放在ReliableQueue中,然后在后台处理它们,并将结果存储在ReliableDictionary中。

有关详细信息,请参见可靠服务概述

注意:目前向客户端公开WebAPI端点的最佳方式是在无状态服务中自托管OWIN服务器。ASP.NET 5项目也将很快得到支持。


我们可以在任何地方注册以尝试在实际的Azure硬件上运行吗? - Firoso
目前还没有,但请保持关注。我们将在今年晚些时候提供Azure集群创建的预览版。 - Sean McKenna
@SeanMcKenna-MSFT,有个小问题。如何扩展Web应用程序。所有示例都在单个Web实例上运行,具有一些预定义的端口。我怎么知道这个Web应用程序在集群中的哪个位置运行? - AlfeG
由于这个问题与原来的问题不同,最好将其作为一个新问题提出。 - Sean McKenna

0

4
如果您的ASP.NET无状态服务在Service Fabric中持续地使用外部数据存储,那么您将错过Service Fabric最好的一些功能。相反,您可以构建一个有状态服务,将数据保存在可靠集合中。它将其数据保存在内存中,并将其复制到集群中的其他节点以实现弹性。这意味着数据的读取全部在内存中进行,速度非常快。然后您的ASP.NET无状态服务可以使用您选择的协议(例如WebAPI、WCF等)与有状态服务进行通信。 - Darran

0
如果你没有状态(或者将其外部化),无状态服务是开始的方式。
对于原始问题的答案是“两者都可以”。基本上,任何具有main()函数(以及几个更多扩展合同方法来与Service Fabric通信)的东西都可以成为Service Fabric世界中的服务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接