桥接 Azure Web 应用程序和 Service Fabric
Bridging Azure Web Apps and Service Fabric
我目前有几个 Azure Web Sites/Apps 运行。我一直在研究 Service Fabric,以此来减轻一些长时间 运行 的工作;类似于 Worker Role 中发生的情况。我知道您可以在 Service Fabric 中托管 Web 应用程序,但我真的不想现在就将我们的 Web sites/apps 移到其中。
例如,将我当前的 Web 应用程序连接到 Reliable Actor 的最佳方式是什么?看完文档和视频后,我觉得只有在 fabric 中托管才能获得 Actor Proxy。除此之外,我可以想象我总是可以设置某种队列,但如果有其他选择,我愿意听取它。
你是对的,你不能直接访问演员。您可以在 Service Fabric 应用程序中拥有一个 Web API - 一种无状态服务 - 它将公开与您的 Web sites/apps 交互所需的端点。
查看文档中的这篇文章,了解有关如何执行此操作的更多详细信息https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-reliable-services-communication-webapi/。
我建议使用像 Azure Service Bus/Storage Queue 这样的队列而不是 web-api,因为作业的性质很长 运行。直接从 Web api 调用 actor 会导致超时。所以你最终还是需要某种队列。
在您的 actors 中使用 reminders 定期查看队列中是否有工作。
我正在为此寻找解决方案,它还有一段路要走。 https://github.com/s-innovations/MessageProcessor.ServiceFabric
但也许它背后的一些基本思想是可重用的,我也是从工人角色迁移到服务结构的。
问题是工作负载非常不同,需要不同类型的机器硬件,目标之一是在它们不做任何事情时不使用昂贵的机器运行。
解决方案是一个服务 farbric 应用程序,它可以部署到集群 运行 5 个额外的小节点上(成本略低于 A1 VM)。
它将监视一组队列(基于配置),只要其中有消息,它就会将服务(也基于配置)部署到可以拉取队列消息的集群。当它闲置一段时间后,它将再次删除该服务。
与 VM 规模集一起,它将根据需要创建新的 VM 大小并再次关闭它们,如上文所述。
一切都是基于 queue/topic 的,从 Azure 网站应用程序,您可以简单地通过将消息发布到服务总线来对工作负载进行排队 topic/queue。
这是帮助创建消息句柄的项目。
https://github.com/s-innovations/S-Innovations.Azure.MessageProcessor
如果您觉得它有趣,请给它投票,我会看看是否可以抽空写更多的文档。
我目前有几个 Azure Web Sites/Apps 运行。我一直在研究 Service Fabric,以此来减轻一些长时间 运行 的工作;类似于 Worker Role 中发生的情况。我知道您可以在 Service Fabric 中托管 Web 应用程序,但我真的不想现在就将我们的 Web sites/apps 移到其中。
例如,将我当前的 Web 应用程序连接到 Reliable Actor 的最佳方式是什么?看完文档和视频后,我觉得只有在 fabric 中托管才能获得 Actor Proxy。除此之外,我可以想象我总是可以设置某种队列,但如果有其他选择,我愿意听取它。
你是对的,你不能直接访问演员。您可以在 Service Fabric 应用程序中拥有一个 Web API - 一种无状态服务 - 它将公开与您的 Web sites/apps 交互所需的端点。
查看文档中的这篇文章,了解有关如何执行此操作的更多详细信息https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-reliable-services-communication-webapi/。
我建议使用像 Azure Service Bus/Storage Queue 这样的队列而不是 web-api,因为作业的性质很长 运行。直接从 Web api 调用 actor 会导致超时。所以你最终还是需要某种队列。 在您的 actors 中使用 reminders 定期查看队列中是否有工作。
我正在为此寻找解决方案,它还有一段路要走。 https://github.com/s-innovations/MessageProcessor.ServiceFabric
但也许它背后的一些基本思想是可重用的,我也是从工人角色迁移到服务结构的。
问题是工作负载非常不同,需要不同类型的机器硬件,目标之一是在它们不做任何事情时不使用昂贵的机器运行。
解决方案是一个服务 farbric 应用程序,它可以部署到集群 运行 5 个额外的小节点上(成本略低于 A1 VM)。
它将监视一组队列(基于配置),只要其中有消息,它就会将服务(也基于配置)部署到可以拉取队列消息的集群。当它闲置一段时间后,它将再次删除该服务。
与 VM 规模集一起,它将根据需要创建新的 VM 大小并再次关闭它们,如上文所述。
一切都是基于 queue/topic 的,从 Azure 网站应用程序,您可以简单地通过将消息发布到服务总线来对工作负载进行排队 topic/queue。
这是帮助创建消息句柄的项目。 https://github.com/s-innovations/S-Innovations.Azure.MessageProcessor
如果您觉得它有趣,请给它投票,我会看看是否可以抽空写更多的文档。