Azure有状态无服务器服务选型:旧Windows服务云化迁移方案咨询
Azure 有状态无服务器服务可选方案
你不需要强制使用Azure Worker Services、Azure Service Fabric这类技术,目前Azure有多个原生无服务器的有状态服务方案可选,可按需匹配你的迁移场景:
- Durable Functions(Azure Functions 扩展)
这是最贴合你现有迁移路径的方案,无需脱离Azure Functions技术栈即可实现状态托管:- 其内置的Durable Task框架会自动持久化编排流程状态、中间结果,你可以将外部系统登录后获取的令牌、会话信息直接交由框架托管,不需要自行实现状态存储、一致性校验逻辑
- 针对需要长期留存的登录凭证类状态,可使用
Durable Entities(持久实体)功能存储,框架自动处理并发访问控制、状态持久化,调用时直接读取实体状态即可复用登录信息,无需重复触发登录流程 - 保留Azure Functions原生的弹性扩缩容能力,支持按负载自动扩缩、缩容到0,完全符合无服务器使用模式
- 带Dapr状态管理的Azure Container Apps
如果你的有状态服务不适配Functions的执行模型,需要打包为Windows容器部署,可选择该方案:- Azure Container Apps是全托管无服务器容器服务,支持有状态副本集编排,可按需挂载持久化存储,支持自定义扩缩容规则,可缩容到0不用承担闲置成本
- 启用Dapr内置的状态管理构建块后,仅需少量代码修改即可实现状态的持久化、一致性控制,无需绑定特定存储服务,迁移灵活度更高
- 原有Windows服务仅需打包为Windows容器即可部署,代码改造成本极低
- 仅当你的服务有极高的状态访问低延迟要求、需要强一致性的本地状态缓存、或者涉及复杂的有状态服务网格调度场景时,再考虑使用Azure Service Fabric托管群集、或者托管在Container Apps/App Service上的Worker Services这类更重的方案
针对你提到的需要先完成外部系统登录的场景,所有方案都建议将登录获得的敏感凭证存储在Azure Key Vault中,状态中仅留存短期有效令牌或者凭证引用,避免敏感信息泄露风险。
内容的提问来源于stack exchange,提问作者MBX
相关产品推荐
相关产品推荐

