Service Fabric 微服务与 Azure Cloud services/web 应用程序集合的优势

Advantages of Service Fabric Microservices vs Collection of Azure Cloud services/web apps

我有一个可以分解为多个通信服务的应用程序。我当前的实现是整体式的,我想对其进行重组,以便可以独立部署、迭代和扩展各个组件。我看到两种使用 Azure 执行此操作的方法:

  1. Service Fabric 服务由一组通信微服务(无状态、web-api 等)组成
  2. 在 http 端点相互调用的单个 Azure Web 应用程序/云服务的集合。

1 比 2 有什么明显的优势吗?任何选择一个而不是另一个的经验法则也会非常有帮助。

我觉得这个页面比较好:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cloud-services-migration-differences/

没有比这更好的了。

没有真正的经验法则。 Service Fabric 可能看起来更复杂,但提供了一些云服务/Web 应用程序所没有的东西。

快速摘要(摘自 link 提供的内容):

Service Fabric 本身是 运行 在 Windows 或 Linux 上的应用程序平台层,而 Cloud Services 是一个用于部署 Azure 管理的 VM 并附加工作负载的系统。 Service Fabric 应用程序模型具有许多优点:

  • 快速部署。创建 VM 实例可能非常耗时。在 Service Fabric 中,VM 只部署一次,形成一个集群来托管 Service Fabric 应用程序平台。从那时起,应用程序包可以非常快速地部署到集群中。
  • 高密度托管。在云服务中,一个辅助角色 VM 承载一个工作负载。在 Service Fabric 中,应用程序与 运行 它们所在的 VM 是分开的,这意味着您可以将大量应用程序部署到少量 VM 上,这可以降低大型部署的总体成本。
  • Service Fabric 平台可以 运行 任何有 Windows 服务器或 Linux 机器的地方,无论是 Azure 还是本地。该平台在底层基础设施之上提供了一个抽象层,因此您的应用程序可以 运行 在不同的环境中运行。
  • 分布式应用程序管理。 Service Fabric 是一个平台,不仅可以托管分布式应用程序,还可以独立于托管 VM 或机器生命周期帮助管理它们的生命周期。

Peter 总结得很好。以下是我的补充观点:

  1. Cloud Service 不是为微服务模式设计的,而 Service Fabric 是。如果你想享受微服务带来的好处,Service Fabric是你最好的选择。 使用 Cloud Service,如果您希望将应用程序分离为自治服务,您可以

    • 创建多个云服务。由于一组云服务没有统一的接口,因此很难监控和管理,Cloud Service 并不是为这种模式设计的。
    • 或者将多个角色添加到单个云服务中,这将导致 a) 您的云服务配置文件膨胀,因为所有服务配置都在一个配置文件中; b) 要升级单个角色,您最终需要重新部署整个云服务!
  2. Cloud Service 不支持交叉 region/DC 部署,而 Service Fabric 支持。这意味着您可以将 DC 级别的灾难恢复转变为由 Service Fabric 自动处理的正常故障转移,请参阅 this