Azure Service Fabric 使用情况

Posted

技术标签:

【中文标题】Azure Service Fabric 使用情况【英文标题】:Azure Service Fabric usage 【发布时间】:2015-07-11 06:26:26 【问题描述】:

Service Fabric 刚刚在构建会议上发布。我正在阅读有关它的稀缺文档,我有一个问题。

我正在评估 Service Fabric 是否可以托管像目前在 ASP.NET WebApi 中构建的微服务之类的 CRUD。

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

【问题讨论】:

【参考方案1】:

这个视频回答了我自己的问题:http://channel9.msdn.com/Events/Build/2015/2-704。总之,我们应该使用无状态服务来托管基于 ASP.NET 的站点或将数据持久保存到外部数据存储的 API。

【讨论】:

如果您从 Service Fabric 中的 ASP.NET 无状态服务持续到外部数据存储,您将丢失 Service Fabric 的一些最佳功能。相反,您可以构建一个有状态的服务,将数据保存在一个可靠的集合中。这会将其数据保存在内存中,并将其复制到集群中的其他节点以实现弹性。这意味着数据的读取都在内存中并且速度非常快。然后,您的 ASP.NET 无状态服务可以使用您选择的协议与有状态服务进行通信:例如WebAPI、WCF 等【参考方案2】:

如果您没有状态(或外部有状态),无状态服务是开始的方式。

原始问题的答案是“两者”。基本上,任何具有 main() 函数(具有与 Service Fabric 对话的更多扩展合约方法)的东西都可以成为 Service Fabric 世界中的服务。

【讨论】:

【参考方案3】:

Service Fabric 支持创建无状态和有状态微服务。

顾名思义,如果节点出现故障,无状态服务实例维护的任何状态都将丢失。一个新的、新鲜的实例将简单地在集群的其他地方启动。

有状态服务提供了在不依赖外部存储的情况下保持状态的能力。存储在Reliable Collection 中的任何数据都将自动复制到集群中的多个节点,确保状态能够抵御故障。

一种常见的模式是使用无状态服务作为应用程序的面向客户端的网关,然后让该服务将流量引导到应用程序的分区有状态服务。这隐藏了客户端解析分区的工作,允许它们针对所有请求的一个逻辑端点。

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

更多详情,请参阅Reliable Services Overview。

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

【讨论】:

我们可以在任何地方注册以在实际的 Azure 硬件上试用吗? 还没有,敬请期待。我们将在今年晚些时候以预览版的形式在 Azure 中创建集群。 @SeanMcKenna-MSFT,小问题。如何扩展 Web 应用程序。所有示例都运行带有一些预定义端口的单个 Web 实例。我如何知道此 Web 应用程序在集群中的哪个位置运行? 最好将其作为一个新问题提出,因为它与原来的问题不同。

以上是关于Azure Service Fabric 使用情况的主要内容,如果未能解决你的问题,请参考以下文章

Azure Service Fabric 与 Azure Service Fabric Mesh

aZURE Service Fabric

Azure App Service 与 Azure Service Fabric [关闭]

Azure Service Fabric:无法运行本地 Service Fabric 群集

为 Service Fabric 配置 Azure 部署

Azure Service Fabric 群集端点不可访问