Service Fabric 刚刚在构建会议上宣布。我正在阅读有关它的稀缺文档,我有一个问题。
我正在评估 Service Fabric 以托管 CRUD,例如目前在 ASP.NET WebApi 中构建的微服务。
Service Fabric 是否适合托管接收数据、处理数据并返回结果的小块功能,而不是托管 CRUD WebApi 类型的应用程序?
Service Fabric 刚刚在构建会议上宣布。我正在阅读有关它的稀缺文档,我有一个问题。
我正在评估 Service Fabric 以托管 CRUD,例如目前在 ASP.NET WebApi 中构建的微服务。
Service Fabric 是否适合托管接收数据、处理数据并返回结果的小块功能,而不是托管 CRUD WebApi 类型的应用程序?
Service Fabric 支持创建无状态和有状态微服务。
顾名思义,如果节点出现故障,无状态服务实例维护的任何状态都将丢失。一个新的、新鲜的实例将简单地在集群的其他地方启动。
有状态服务提供了在不依赖外部存储的情况下保持状态的能力。存储在Reliable Collection中的任何数据都将在集群中的多个节点之间自动复制,从而确保状态对故障具有弹性。
一种常见的模式是使用无状态服务作为应用程序的面向客户端的网关,然后让该服务将流量引导到应用程序的分区有状态服务。这隐藏了客户端解析分区的工作,允许它们针对所有请求的一个逻辑端点。
查看WordCount 示例,了解其工作原理。WordCount.WebService 无状态服务充当应用程序的前端。它只是根据传入的请求解析分区,然后将其发送。WordCount.Service 有状态服务(根据单词的第一个字母进行分区)立即将这些传入请求放入 ReliableQueue,然后在后台处理它们,将结果存储在 ReliableDictionary 中。
有关更多详细信息,请参阅可靠服务概述。
注意:目前,向客户端公开 WebAPI 端点的最佳方式是在无状态服务中自托管 OWIN 服务器。ASP.NET 5 项目也将很快得到支持。
如果您没有状态(或在外部有状态),无状态服务是开始的方式。
原始问题的答案是“两者”。基本上,任何具有 main() 函数(具有与 Service Fabric 对话的更多扩展合同方法)的东西都可以成为 Service Fabric 世界中的服务。
该视频回答了我自己的问题:http ://channel9.msdn.com/Events/Build/2015/2-704 。总之,我们应该使用无状态服务来托管基于 ASP.NET 的站点或 API,它们将数据持久化到外部数据存储。