Service Fabric基本概念: Node, Application, Service, Partition/Replicas

做者:张鼎松 (Dingsong Zhang) @ Microsoft服务器

 

在上一节中,为你们简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件。紧接上文内容,本节将为你们介绍Azure Service Fabric的基本概念及相关组件的工做机制, 包括Micro Service, Node type, Node等等。虽然名称叫Azure Service Fabric但其可应用的平台远不止Azure平台自己,咱们会在后续章节的使用场景中为你们专门描述Service Fabric在各大平台上的工做形式。网络

Microsoft Azure Service Fabric是微软开发的一套支撑高可用高伸缩云服务的框架,其核心部分是一个分布式系统平台,用于构建可扩展的可靠应用。在便于封装可部署代码的同时,支持建立无状态和有状态的微服务,经过云平台来伸缩他们,来应对高复杂度、低延迟、数据密集的状况。开发者和系统管理员能够免于处理复杂的基础设施问题,将精力更多地投入到所构建应用程序的实现上。架构

 

 

微服务Microserviceapp

在具体介绍Service Fabric以前,不得不先提一下微服务的思想。由于使用Service Fabric的开发过程就是微服务的设计开发过程。有了Service Fabric,您只须要考虑开发微服务的功能,而无需过多考虑部署后的伸缩性和可用性的问题,这些问题均可以交给Service Fabric来帮您实现。框架

微服务的思想就是将复杂单体式应用程序解耦成多个各个独立的服务,在功能不变的状况下,被分解出来的多个可管理的服务能够经过约定的接口相互通讯。这种方法为采用单体式编码很难实现的功能提供了模块化的解决方案。由于,单个服务能够更易于开发、维护。这种架构方式使每一个单个服务均可以有专门的团队来开发,每一个团队能够各自选择本身擅长的开发技术,经过约定接口来实现相互通讯。每一个服务能够独立实现、测试、部署和升级,开发者再也不须要担忧其余服务部署对本服务的影响。AB测试加快了部署的速度,从而实现持续集成持续部署。全部微服务做为一个总体为用户提供服务,同时各个微服务能够根据自身对资源的需求独立扩展,从而最大化服务器的资源利用率。分布式

回到Service Fabric, 一个Service Fabric开发的应用程序由数个服务组成,每一个服务能够做为个体独自修改、扩展和管理,同时能够按照一个完整的应用程序来管理。Service fabric的设计目的就是用微服务的方式来简化构建复杂应用的过程。模块化

 

集群Cluster微服务

集群是一组经过网络链接的虚拟或者物理主机,您的微服务就部署在集群中,集群的大小能够扩展到上千台主机。测试

 

节点Node编码

集群中的一台机器或者VM称为Node, 每一个Node会被分配一个名称(string字符串)。Node还有其余一些属性,好比位置属性placement properties。能够经过每台机器或者VM都有一个自启动Windows系统服务FabricHost.exe,它随系统启动后会执行另外两个程序:Fabric.exe 和 FabricGateway.exe, 这两个程序就组成了一个完整的Node。出于测试目的,有时单台机器上也能够经过运行多个Fabric.exe 和 FabricGateway.exe的实例来拥有多个Node。

一个集群中的全部Node相互之间平等且能够直接互相通讯。Node除了宿主在物理主机或VM中,还能够宿主在基于Windows的Docker容器中、本地部署的服务器中、其余公有云和私有云中,咱们会在后续Service Fabric的使用场景中为你们详细介绍这一内容。

 

 

应用程序Application:Application Type和Service Type

Service Fabric应用程序(Application)是一组服务(service)的集合,其中一个service是为Application提供指定功能的单元。您将经过定义一个Application Type和对应的几个Service Type来构建一个Service Fabric的Application. 当Application被部署到Service Fabric Cluster里面时,这些类型会被相应地初始化成application实例和service实例。这里相似咱们OO地思想。

Application Type和Named Application: Application Type包含一组Service Type的集合,对应上文中的Service Fabric应用程序(Application)是一组服务(service)的集合。 Application Type的name和version定义在ApplicationManifest.xml文件中。在部署的时候,ApplicationManifest.xml会被拷贝到Service Fabric的image store中。经过在Cluster中建立Named Application来初始化Application的实例。Named Application经过"fabric:/MyNamedApp"的形式来命名。

Service Type和Named Service: Service Type的name和version定义在ServiceManifest.xml文件中。当建立好一个Named Application后,就能够建立Named service. 例如您在 "MyNamedApp" Named Application中建立一个 "MyDatabase" Named Service, Name Service被命名为 "fabric:/MyNamedApp/MyDatabase".

 

 

 

分区Partitions和复制replicas

一个service能够包含多个分区Partition,Service Fabric经过使用分区做为扩展的机制来将工做分布到不一样的service实例上。

一个分区Partition能够包含一个或者多个复制replicas。Service Fabric经过使用复制来实现可用性。一个分区能够有一个主复制和多个从复制,多个复制之间的状态能够自动同步。当主复制出现错误时,其中一个从复制被自动提高为主复制,以保证系统的可用性。而后将从复制的个数恢复到正常水平,保证足够的从复制冗余。

 

这部分概念若是使读者有些难以理解,咱们将在下一节经过示例的方式来说解这些概念,便于你们理解。