Service Fabric基本概念:Partition/Replicas示例
作者:张鼎松 (Dingsong Zhang) @ Microsoft
在上一节的结尾简单介绍了Service Fabric中分区Partitions和复制replicas的概念,本节主要以示例的形式来具体说明这个抽象概念在Service Fabric中的工作方式。
1. 分区Partitions和复制replicas
一个service可以包含多个分区Partition,Service Fabric通过使用分区作为扩展的机制来将工作分布到不同的service实例上。
一个分区Partition可以包含一个或者多个复制replicas。Service Fabric通过使用复制来实现可用性。一个分区可以有一个主复制和多个从复制,多个复制之间的状态可以自动同步。当主复制出现错误时,其中一个从复制被自动提升为主复制,以保证系统的可用性。然后将从复制的个数恢复到正常水平,保证足够的从复制冗余。
(Note: 下文中出现的所有Instance 跟Replica是同一个意思)
如下图示例,我们假设一个有一个Cluster中有5个Node, 现在我们要在Cluster上部署一个Application, 这个Application包含两个Service。 Application Type为“A”,Service Type为“S”。
首先我们要创建一个Named Application, 按照上一节提到的Application的命名规范,我们将这个Named Application叫做“faric:/A1”。依次再创建两个“S” type的Named Service,并将它们命名为“fabric:/A1/S1”和“fabric:/A1/S2”。

2. 创建Named Application
对于创建的这个Named Application “faric:/A1”, Service Fabric提供三种方式对其进行管理:
- REST API: 可以使用REST API 通过HTTP 协议和 port 19080进行管理
- PowerShell commands: PS Cmdlet 使用的是 TCP 协议和 port 19000进行管理
- Fabric Client: 还可以使用 C#/VB的.Net 类库Fabric Client, 其实内部使用的仍然是 TCP on port 19000的方式
3. 创建Named Service
我们希望S1有一个分区,三个Instance. S2有2个分区,2个Instance.

我们看到Named Service fabric:/A1/S1,按照要求我们希望设置 Partition count为 1, Instances count 为 3。 1个Partition乘以3个 Instances等于3。 (1x3=3). 所以Service Fabric会选择Cluster中的3个Node来存放这个Named Service. 我们不需要去控制这个过程,Service Fabric会帮我们完成这个操作。
现在,S1在Cluster中的分布如下图:
Service fabric选择了 Node #1 #2 和 #3 给
Partition 1, Instance 1: fabric:/A1/S1, P1, I1
Partition 1, Instance 2: fabric:/A1/S1, P1, I2
Partition 1, Instance 3: fabric:/A1/S1, P1, I3
同一Partition的不同instance要分布在不同的Node上。
就是说Instance1 和Instance2永远不可能在同一个Node上,这样设计的原因是高可用性:当任何一个Node突然出现故障不能工作时,其他Node能够正常提供服务。 但是如果两个或两个以上的Instance在同一个Node上时,这个Node出现故障,您将会失去这个Node上的所有数据。
Service Fabric 被设计成可以将 instance分散发布在不同的Nodes上,以保证可以给用户高可用性的体验。

我们继续创建另一个Named Service: “fabric:/A1/S2”, Partitions count为2, Instances/Replicas count为2。 (2x2=4)
Partition 1, Instance 1: fabric:/A1/S2, P1, I1
Partition 1, Instance 2: fabric:/A1/S2, P1, I2
Partition 2, Instance 1: fabric:/A1/S2, P2, I1
Partition 2, Instance 2: fabric:/A1/S2, P2, I2
Service Fabric 会首先将Partition1 Instance1部署在 Node3上, 然后再将 Partition1 Instance2 放置在Node4上。
(Service Fabric 可以确保不同的 instances/replicas被放置部署在不同的 Nodes上)

然后继续将 Partition2 Instance2 放置在Node5, Partition2 Instance1 放置在 Node4.
你会注意到 Partition1 Instance2 和 Partition2 Instance1 都在同一个 Node4上。这样是没有问题的,因为当 Node4出现故障时, 我们在Cluster中仍然拥有 Partition1 的一个Instance1和 Partition2的 Instance2。
Node4 is a single point of failure but for two instances of different Partitions, 我们永远不会让一个Partition的两个Instance出现在同一个Node上。

到此为止,Service Fabric就完成了S1 和S2的部署。
Service Fabric基本概念:Partition/Replicas示例的更多相关文章
- Service Fabric基本概念: Node, Application, Service, Partition/Replicas
作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...
- 拥抱Service Fabric —— 目录
理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...
- 微服务框架之微软Service Fabric
常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...
- 转:微服务框架之微软Service Fabric
常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...
- Service Fabric —— Stateful Service 概念
作者:潘罡 (Van Pan) @ Microsoft 上节中我们谈到了Service Fabric最底层的两个概念,一个是针对硬件层面而言的Node Type和Node.另一个是Applicatio ...
- Service Fabric —— Actor / Stateless Service 概念
作者:潘罡 (Van Pan) @ Microsoft 上一节我们谈到了Stateful Service.在Service Fabric中,Stateful Service是理解Micro Servi ...
- service fabric docker 安装
1. 镜像拉取 docker pull microsoft/service-fabric-onebox 2. 配置docker(daemon.json) { "ipv6": tru ...
- 【Azure微服务 Service Fabric 】使用az命令创建Service Fabric集群
问题描述 在使用Service Fabric的快速入门文档: 将 Windows 容器部署到 Service Fabric. 其中在创建Service Fabric时候,示例代码中使用的是PowerS ...
- How to deploy JAVA Application on Azure Service Fabric
At this moment, Azure Service Fabric does not support JAVA application natively (but it's on the sup ...
随机推荐
- kafka handler
1.配置kafka 参数文件 在ogg主目录下有示例文件: [root@WH0PRDBRP00AP0013 ogg]# cd AdapterExamples/big-data/kafka/ [root ...
- 第31次Scrum会议(11/19)【欢迎来怼】
一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/19 17:05~17:34,总计29min. 地 ...
- java实验2实验报告(20135232王玥)
实验二 Java面向对象程序设计 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解 ...
- 冲刺One之站立会议4 /2015-5-17
今天我们继续了昨天未完成的部分,把服务器端的在线人数显示做了出来,但是在调试的时候还有一些不可预知的自己也不会改的bug,让我们有点不知所措,启动时间的显示相对来说比较容易实现. 燃尽图4
- 学习pl/sql之一
--使用pl/sql语句打印一个hello world begin dbms_output.put_line('hello,world'); end; 但是在sqlplus里面就不一样了 ...
- sprint冲刺(第二天)
今天的每日立会是在早上早餐后8点在宿舍讨论的,大概讨论了关于四则运算练习器APP的看法,也对一些较为基础的功能进行说明
- 灵悟礼品网上专卖店——画出E-R图
一.小组成员: 洪雪意(产品负责人) 陈淑筠(Master) 二.组内人员任务情况 计划完成的任务的第三个模块:分析并建立数据库 已完成的任务: 任务的第三个模块: 陈淑筠(完成任务1):画出商品资料 ...
- 结对随即四则运算(带界面Java版)
//随机四则运算类 public class 随机四则运算 { public static void main(String[] args) { new 界面();//进入随机四则运算的首界面 } } ...
- MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...
- 读《构建之法》一、二、十六章随笔a
第一章 概论 “软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步开展后续工作”:——p3 问题:好的用户体验要从软件分析开始,那么软件分析仅仅是从用户的需求出发吗? 我的看法:需求分析是 ...