Microsoft Azure Service Fabric

架构

Service Fabric 是一个基于Azure 基础建设上的平台服务，但它和Azure 云端服务最大的差异是，Service Fabric 一开始就有丛集(Cluster) 的概念，Azure 云端服务是以虚拟机器为单位，Service Fabric 则是以丛集为单位，每一个丛集依照服务等级会有不同的虚拟机器数量，大小则是看建立丛集时的选择。

节点

一个 Service Fabric 丛集可以包含最多三个节点(Node)，节点的概念和云端服务的角色类似，它可以个别定义虚拟机器的等级、类型与数量，配置方式也可以自订。当丛集部署到Azure 后，每一个节点都会生成指定数量的虚拟机器，并且依照错误域(Fault Domain) 与更新域(Upgrade Domain) 做隔离配置，而每一个节点会拥有自己的负载平衡器，所有与该节点有关系的虚拟机器网络设定都要由该负载平衡器处理，包含对外的IP 与可用的Port 等。
节点的部署是采用虚拟机器扩展集(VM Scale Set) 的规则进行，每一次的VM 横向扩展都会赋与有规则性增长的连接埠，因此若要连到个别的虚拟机器，除了可用Service Fabric 的 API 外，也可以由Portal 取得该机器的Port，再使用远端桌面连入即可。

开发模型

Service Fabric 在概念上有分为有状态(Stateful) 以及无状态(Stateless) 两种，而在API 类型上则分为客座可执行档(Guest Executable)、可靠动作者(Reliable Actor) 以及可靠服务(Reliable Service) 三种。
客座可执行档系指Service Fabric 在启动服务时启动的是一个可执行档，而不是由Service Fabric API 所开发的应用程序，因此它虽然是放在Service Fabric 内，但本身并不参与Service Fabric 里面的互动，通常也不会使用Service Fabric 的 API 取得资讯(例如服务的Proxy 或是网络位址等)，它就只是单纯的可执行档，通常会作为前端界面，例如 node.js 网站。客座可执行档在Service Fabric 中是以无状态的概念管理。
可靠动作者是以Actor Model 的概念开发的，每个应用程序都是一个动作者(Actor)，每个动作者是一个独立的单执行绪执行空间，但一个Service Fabric 内可以有很多个动作者，而且每个动作者之间是隔离的空间，而每个动作者可以被建立出多个执行个体，简单的说，一个游戏者(Gamer) 可以建立出多个动作者，例如与别的游戏者交谈的Session Actor、游戏进行的主线Main Actor、交换讯息的Messaging Actor 等，而这些动作者可以被多个用户端所建立，因此等于每个动作者的拥有者都会不同，Service Fabric 丛集内会不断的生出许多的动作者，而每一个动作者都运行着它自己要做的工作，或是和别的Actor 交谈。
可靠服务则是提供功能的服务，视应用程序需要可划分成有状态(Stateful Service) 与无状态(Stateless Service)，这两者的差异是有状态的服务可以使用可靠字典(Reliable Dictionary) 与可靠伫列(Reliable Queue) 来保存状态，可靠字典与可靠伫列的可用性与可存取性是由Service Fabric 进行管理，服务不需要介入，只要使用Service Fabric API 就能获取；无状态的服务则是一般的服务，若它要保存状态，就要依赖外部的状态保存机制，例如 Azure Redis Cache。