你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
想要了解 Service Fabric 吗?
项目
Service Fabric 是分布式系统平台,可借助它轻松打包、部署和管理可缩放且可靠的微服务。 不过,Service Fabric 的外围应用领域广泛,有很多东西需要学习。 本文简要说明了 Service Fabric,并介绍了核心概念、编程模型、应用程序生命周期、测试、群集和运行状况监视。 请参阅概述和什么是微服务?,概览相关信息,并了解如何使用 Service Fabric 创建微服务。 本文包含的内容列表虽不完整,但确实提供了 Service Fabric 每个应用领域的概述和入门文章链接。
应用程序包目录中的文件会复制到 Service Fabric 群集的映像存储中。 然后,可基于此应用程序类型,创建在群集内运行的命名应用程序。 创建命名应用程序后,可以从应用程序类型的服务类型之一创建命名服务。
运行时:群集和节点、命名的应用程序、命名的服务、分区和副本
Service Fabric 群集是一组通过网络连接在一起的虚拟机或物理计算机,你的微服务会在其中部署和管理。 群集可以扩展到成千上万台计算机。
构成群集的计算机或 VM 称为节点。 需为每个节点分配节点名称(字符串)。 节点具有各种特征,如放置属性。 每个计算机或 VM 都有一个自动启动 Windows 服务 FabricHost.exe,此服务在引导时开始运行,然后启动两个可执行文件:Fabric.exe 和 FabricGateway.exe。 这两个可执行文件构成了节点。 在开发或测试方案中,可以通过运行 Fabric.exe 和 FabricGateway.exe 的多个实例,在单台计算机或 VM 上托管多个节点。
命名应用程序是由执行一个或多个特定功能的命名服务组成的集合。 服务执行完整且独立的功能(它们可以独立于其他服务启动和运行),并由代码、配置和数据组成。 将应用程序包复制到映像存储后,可以通过指定应用程序包的应用程序类型(使用其名称/版本)在群集内创建应用程序的实例。 会为每个应用程序类型实例分配一个如下所示的 URI 名称:fabric:/MyNamedApp。 在群集中,可以从单个应用程序类型创建多个命名应用程序。 也可以从不同的应用程序类型创建命名应用程序。 可单独管理每个命名应用程序并设置其版本。
创建命名应用程序后,可以通过指定服务类型(使用其名称/版本),在群集中创建应用程序服务类型之一的实例(命名服务)。 需为每个服务类型实例分配一个 URI 名称,该名称归并到实例的命名应用程序的 URI 之下。 例如,如果在命名应用程序“MyNamedApp”中创建命名服务“MyDatabase”,则 URI 类似于: fabric:/MyNamedApp/MyDatabase。 在一个命名应用程序中可以创建一个或多个命名服务。 每个命名服务可以有自身的分区方案和实例/副本计数。
使用 Service Fabric,可以生成包含微服务或容器的应用程序。 无状态微服务(例如协议网关和 Web 代理)不在请求以及服务对请求的响应之外维持可变状态。 Azure 云服务辅助角色是无状态服务的一个示例。 有状态微服务(例如,用户帐户、数据库、设备、购物车、队列)维护除请求及其响应之外的可变、授权状态。 当今的 Internet 规模应用程序包含无状态和有状态微服务的组合。
Service Fabric 的关键区别在于,大力注重使用内置编程模型或容器化有状态服务生成有状态服务。 应用程序方案介绍了可使用有状态服务的方案。
Service Fabric 提供了多种方法来编写和管理服务。 服务可以使用 Service Fabric API 来充分利用平台的功能和应用程序框架。 服务还可以是采用任何语言编写的任意编译可执行程序,并在 Service Fabric 群集上托管。 有关详细信息,请参阅支持的编程模型。
容器
默认情况下,Service Fabric 以进程形式部署和激活服务。 Service Fabric 还可以在容器中部署服务。 重要的是,可以在同一应用程序中混合使用进程中的服务和容器中的服务。 Service Fabric 支持在 Windows Server 2016 上部署 Linux 容器 和 Windows 容器。 可以在容器中部署现有应用程序、无状态服务或有状态服务。
Reliable Services
Reliable Services 是一个用于编写服务的轻型框架,这些服务与 Service Fabric 平台集成并且受益于完整的平台功能集。 Reliable Services 可以是无状态的(与大多数服务平台类似,例如 Web 服务器或 Azure 云服务中的辅助角色),此时状态保存在外部解决方案中,例如 Azure DB 或 Azure 表存储。 Reliable Services 也可以是有状态的,此时状态使用 Reliable Collections 直接保存在服务中。 通过复制使状态具有高可用性,以及通过分区来分布状态,所有状态由 Service Fabric 自动管理。
Reliable Actors
Reliable Actor 框架在 Reliable Services 的基础上构建,是根据执行组件设计模式实现虚拟执行组件模式的应用程序框架。 Reliable Actor 框架使用称为执行组件的单线程执行的独立的计算单元和状态。 Reliable Actor 框架为执行组件提供内置通信,以及提供预设的状态暂留和扩展配置。
ASP.NET Core
Service Fabric 与 ASP.NET Core 集成,作为用于生成 Web 和 API 应用程序的第一类编程模型。 在 Service Fabric 中可通过两种不同方法使用 ASP.NET Core:
作为来宾可执行文件托管。 这主要用于在 Service Fabric 上运行现有 ASP.NET Core 应用程序,无需更改代码。
在 Reliable Service 内部运行。 这可改善与 Service Fabric 运行时的集成,实现有状态的 ASP.NET Core 服务。
来宾可执行文件
来宾可执行文件是(采用任何语言编写的)任意现有可执行文件,并在 Service Fabric 群集及其他服务上托管。 来宾可执行文件不直接与 Service Fabric API 集成。 不过,它们仍受益于平台提供的功能,如自定义运行状况和负载报表以及服务可发现性(通过调用 REST API)。 它们还具有完整的应用程序生命周期支持。
应用程序生命周期
与其他平台一样,Service Fabric 上的应用程序通常会经历以下几个阶段:设计、开发、测试、部署、升级、维护和删除。 Service Fabric 为云应用程序的整个应用程序生命周期提供一流的支持:从开发到部署、到日常管理和维护,再到最终解除授权。 服务模型使多个不同角色可以独立参与到应用程序生命周期中。 Service Fabric 应用程序生命周期一文提供了有关 API 的概述,以及在 Service Fabric 应用程序生命周期的各个阶段,它们是如何被不同角色所使用的。
Service Fabric 群集是一组通过网络连接在一起的虚拟机或物理计算机,你的微服务将在其中部署和管理。 群集可以扩展到成千上万台计算机。 群集中的计算机或 VM 称为群集节点。 需为每个节点分配节点名称(字符串)。 节点具有各种特征,如放置属性。 每个计算机或 VM 都有一个自动启动服务 FabricHost.exe,此服务在引导时开始运行,并启动两个可执行文件:Fabric.exe 和 FabricGateway.exe。 这两个可执行文件构成了节点。 在测试方案中,可以通过运行 Fabric.exe 和 FabricGateway.exe 的多个实例,在单台计算机或 VM 上托管多个节点。
可在运行 Windows Server 或 Linux 的虚拟机或物理计算机上创建 Service Fabric 群集。 可在包含一组互连 Windows Server 或 Linux 计算机(本地计算机、Microsoft Azure 计算机或任何云提供商的计算机)的任何环境中部署和运行 Service Fabric 应用程序。
如同在 Windows 上一样,可以使用 Linux 上的 Service Fabric 在 Linux 上构建、部署和管理高可用性、高度可缩放的应用程序。 Service Fabric 框架(Reliable Services 和 Reliable Actors)除了可在 C# (.NET Core) 中使用以外,也能在 Java on Linux 中使用。 还可以使用任何语言或框架来构建来宾可执行的服务。 还支持协调 Docker 容器。 Docker 容器可以运行使用 Service Fabric 框架的来宾可执行文件或本机 Service Fabric 服务。 有关详细信息,请参阅 Linux 上的 Service Fabric。
Service Fabric 提供一个安装包,用于在本地或者任何云提供程序上创建独立的 Service Fabric 群集。 使用独立群集可随时随地托管群集。 如果数据受符合性或法规约束,或者需要将数据保留在本地,可以托管自己的群集和应用程序。 Service Fabric 应用程序可在多个托管环境中运行,而不发生任何变化。因此,在应用程序生成方面的知识在各个托管环境中都适用。
我们会定期发布新版本的 Service Fabric 运行时。 在群集上执行运行时或结构升级,以便始终运行受支持的版本。 除了结构升级,还可以更新群集配置(例如证书或应用程序端口)。
Service Fabric 群集是你拥有的,但部分由 Microsoft 管理的资源。 Microsoft 负责修补基础 OS 并在群集上执行结构升级。 当 Microsoft 发布新版本时,可以将群集设置为接收自动结构升级,或选择所需的受支持结构版本。 可通过 Azure 门户或 Resource Manager 设置结构和配置升级。 有关详细信息,请参阅升级 Service Fabric 群集。
Service Fabric 引入了运行状况模型,用于在特定实体上标记不正常的群集和应用程序状态(例如群集节点和服务副本)。 运行状况模型使用运行状况报告器(系统组件和监视器)。 其目标是实现轻松快捷的诊断和修复。 服务写入程序需要预先考虑运行状况和如何设计运行状况报告。 应报告任何可能会影响运行状况的条件,尤其是如果它有助于标记出接近根源的问题。 在生产中大规模启动并运行服务后,运行状况信息可以减少调试和调查工作所需的时间和精力。
Service Fabric 报告器可监视感兴趣的已标识条件。 它们会根据其本地视图报告这些条件。 运行状况存储可汇总所有报告器发送的运行状况数据,从而确定实体的全局运行状况是否正常。 该模型应具有功能丰富、灵活且易于使用的特点。 运行状况报告的质量决定了群集运行状况视图的准确度。 错误显示不正常问题的误报会对升级或其他使用运行状况数据的服务产生负面影响。 修复服务和警报机制就是此类服务的例子。 因此,提供报表时需多加考量,才能让其以尽可能最佳的方式捕获感兴趣的条件。
可以基于以下内容完成报告:
受监视的 Service Fabric 服务副本或实例。
内部监视器部署为 Service Fabric 服务(例如,可监视状态和问题报告的 Service Fabric 无状态服务)。 可以在所有节点上部署监视器,也可以将监视器与受监视的服务关联。
在 Service Fabric 节点上运行,但未以 Service Fabric 服务形式实现的内部监视器。
从 Service Fabric 群集外探测资源的外部监视器(例如,诸如 Gomez 之类的监视服务)。
Service Fabric 组件报告包含群集中所有实体的运行状况。 系统运行状况报告提供有关群集和应用程序功能的可见性,并且通过运行状况标记问题。 对于应用程序和服务,系统运行状况报告从 Service Fabric 运行时的角度验证实体得到实现并且正常运行。 报告不对服务的业务逻辑进行任何运行状况监视,也不检测已停止响应的进程。 若要添加特定于服务逻辑的运行状况信息,请在服务中执行自定义运行状况报告。