Azure 上的有状态和无服务器服务
Stateful and serverless services on Azure
我正处于一个过程中,我需要将一堆旧的 Windows 服务转换为对云更友好的方式。目前,解决方案中唯一的云是它们都托管在 Azure 虚拟机上。而且,当然,如果不扩展整个虚拟机,您将无法扩展特定服务。
很多服务几乎可以直接转换为 Azure Functions,但其他服务是有状态的,例如在它可以做它的事情之前需要一个外部部分的登录过程。
我们有哪些选择可以在需要状态的 Azure 中创建无服务器服务,或者我是否需要使用 Azure Worker Services 或 Azure Service Fabric 等技术?
现在我有了更深入的了解,可以提供一些信息。
Worker Services(以前的 Cloud Services)现已弃用。您可以使用 Service Fabric 或虚拟机作为替代品。
您可以使用虚拟机规模集轻松扩展虚拟机,但您需要编写无状态服务,或使用专用服务作为 'state server'(例如,需要状态服务器的 Web 应用程序,您可以为此使用 Azure Redis 缓存)。
我通常将我的批处理作业重写为 Azure Functions,并尽可能使用 Durable Functions,因为它简化了我的函数代码。
请注意,您目前无法将 Durable Functions 与 .NET 5 一起使用。目前尚不清楚它是否会受到支持,或者他们是否会直接跳到 .NET 6。
作为另一种选择,您可以使用 Hangfire 等框架,并在 Azure App Service Plan 上托管(假设您已经拥有一个)。它非常适合长时间的 运行 流程,并且有一个很棒的仪表板,您可以在其中监控作业的状态。
您还可以使用 Azure 容器实例剥离一些容器,并使用它来处理您的作业。
现在有了所有这些信息,选择取决于您的要求。
编辑:今天,在 Microsoft Ignite 上宣布了一项新服务,用于基于容器、Azure Worker Apps 的长期 运行 作业,您也可以查看它。
我正处于一个过程中,我需要将一堆旧的 Windows 服务转换为对云更友好的方式。目前,解决方案中唯一的云是它们都托管在 Azure 虚拟机上。而且,当然,如果不扩展整个虚拟机,您将无法扩展特定服务。
很多服务几乎可以直接转换为 Azure Functions,但其他服务是有状态的,例如在它可以做它的事情之前需要一个外部部分的登录过程。
我们有哪些选择可以在需要状态的 Azure 中创建无服务器服务,或者我是否需要使用 Azure Worker Services 或 Azure Service Fabric 等技术?
现在我有了更深入的了解,可以提供一些信息。
Worker Services(以前的 Cloud Services)现已弃用。您可以使用 Service Fabric 或虚拟机作为替代品。
您可以使用虚拟机规模集轻松扩展虚拟机,但您需要编写无状态服务,或使用专用服务作为 'state server'(例如,需要状态服务器的 Web 应用程序,您可以为此使用 Azure Redis 缓存)。
我通常将我的批处理作业重写为 Azure Functions,并尽可能使用 Durable Functions,因为它简化了我的函数代码。
请注意,您目前无法将 Durable Functions 与 .NET 5 一起使用。目前尚不清楚它是否会受到支持,或者他们是否会直接跳到 .NET 6。
作为另一种选择,您可以使用 Hangfire 等框架,并在 Azure App Service Plan 上托管(假设您已经拥有一个)。它非常适合长时间的 运行 流程,并且有一个很棒的仪表板,您可以在其中监控作业的状态。
您还可以使用 Azure 容器实例剥离一些容器,并使用它来处理您的作业。
现在有了所有这些信息,选择取决于您的要求。
编辑:今天,在 Microsoft Ignite 上宣布了一项新服务,用于基于容器、Azure Worker Apps 的长期 运行 作业,您也可以查看它。