作者:潘罡 (Van Pan)@ Microsoft

什么是PLB (Placement and Load Balancing)

介绍FM的上文中,我们提到了PLB。

这个组件和FM协同工作,为FM提供了replica分布的支持和计算。

在本节中,我们将详细介绍该组件。

我们还是从Service Fabric架构图开始。

PLB和FM一样,也是Reliability Subsystem中的一部分。

PLB负责以下具体工作:

  • 当一个新的Service被创建,决定在哪些Node中放置所有的Replica。值得一提的是,FM本身并不决定具体的Replica的分布,FM是通过和PLB的通讯来获知PLB的算法结果。
  • 当某个Primary Replica失效了,决定将哪个Secondary Replica提升成为Primary
  • 当某个Secondary Replica失效了,决定在哪些Node中创建新的Secondary Replica
  • 不断扫描并判定当前的各个服务Placement是否违反限制(比如是否满足FD,UD的要求)。如果发现有违反可用性限制,决定如何重新部署。
  • 不断扫描并判定当前所有服务的分布状态是否负载均衡(此处是指所有Node以及服务压力都较为平均)。如果发现某些Node或者Replica负载比较突出,决定如何重新调整当前分布。

PLB工作流程

PLB和FM的工作非常紧密,简单理解如下:

  • FM通过各种事件(比如新建Service,Node失效等等)向PLB通知各项状态:Node,Service Type,Services,Failover Units (请见上节),各组件压力。
  • PLB接收这些信息并在内部不断更新全局视图。
  • PLB根据FM事件进行即时判定。
  • 除了高优先级事件外,PLB内部通过定时任务不断计算以下数据:
    • 检查是否违反分布限制
    • 通过算法尝试进行服务虚拟移动,并计算移动后的压力以及分布限制情况
  • 根据PLB计算的调整结果,通知FM进行Replica新建或者移动。(随后FM会通知各个Node的RA,这点我们已经在上文说明)

具体PLB工作实例

我们还是以创建Service为例。

在上一节介绍FM的过程中,我们提到FM会和PLB进行数据交互。

将这一块放大,流程如下:

  1. FM收到新建Service命令
  2. FM向PLB发布更新Service请求并通知Service类型(比如Stateful或者Stateless等)
  3. FM更新Failover Unit缓存,并向PLB发送Primary Replica ID等信息
  4. PLB向FM回复Primary Replica的placement信息
  5. FM发送Secondary Replica ID等信息
  6. PLB向FM回复Secondary Replica的placement信息

Service Fabric Placement and Load Balancing的更多相关文章

  1. 拥抱Service Fabric —— 目录

    理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...

  2. 微服务框架之微软Service Fabric

    常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...

  3. Service Fabric Failover Manager

    作者:潘罡 (Van Pan)@ Microsoft 什么是Failover Manager 我们回到Service Fabric系统架构图. Failover Manager是Reliability ...

  4. 转:微服务框架之微软Service Fabric

    常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...

  5. 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题

    问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...

  6. 【架构】How To Use HAProxy to Set Up MySQL Load Balancing

    How To Use HAProxy to Set Up MySQL Load Balancing Dec  2, 2013 MySQL, Scaling, Server Optimization U ...

  7. How Network Load Balancing Technology Works--reference

    http://technet.microsoft.com/en-us/library/cc756878(v=ws.10).aspx In this section Network Load Balan ...

  8. Network Load Balancing Technical Overview--reference

    http://technet.microsoft.com/en-us/library/bb742455.aspx Abstract Network Load Balancing, a clusteri ...

  9. Service Fabric 与 Ocelot 集成

    概要 云应用程序通常都需要使用前端网关,为用户.设备或其他应用程序提供同一个入口点. 在 Service Fabric 中,网关可以是任意无状态服务(如 ASP.NET Core 应用程序) . 本文 ...

随机推荐

  1. PHP 抽象类和接口区别

    php中抽象类和接口的区别 1) 概念 面向对象的三大概念:封装,继承,多态 把属性和方法封装起来就是类.      一个类的属性和方法被另外的类复制就是继承,PHP里面的任何类都可以被继承,被继承的 ...

  2. 允许使用root远程ssh登录(Ubuntu 16.04)

    今天装了ubuntu16和17,发现还是ubuntu16看着顺眼,所以以后决定用ubuntu16, 然后想换语言发现更新失败,所以想换成中国的源,但是vm里面复制粘贴不了,所以想用secureCRT连 ...

  3. 在Web Page中包含PHP代码

    PHP代码可以出现在Web Page的任何位置,甚至在HTML的标签里面也可以.有4中方式在Web Page中包含PHP代码: 使用<?php ... ?>标签 <!doctype ...

  4. DWR、Comet4j在Nginx+Tomcat组合下的优化

    DWR.Comet4j这类推送框架在Tomcat下运行正常,但在nginx+tomcat组合下,可能会出现断连.延迟等各种问题. 如出现此类问题,可尝试以下优化方式: 1.Nginx-----ngin ...

  5. JAVA实验报告三:敏捷开发与XP实践

    实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需 ...

  6. 【图论】POJ-3255 次短路径

    一.题目 Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...

  7. Keil C51与Keil ARM共存

    转自:http://blog.chinaunix.net/uid-20734916-id-3988537.html Keil和MDK共存,按照以下步骤:1 先安装 Keil C51,安装目录改为:&q ...

  8. 项目复审—Alpha阶段

    项目复审-Alpha阶段 小组的名字和链接 优 点 缺 点 排名 [别看了你没救队]http://www.cnblogs.com/liaoyujun233/p/9016362.html 此队优点很多, ...

  9. PAT 1034 有理数四则运算

    https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008 本题要求编写程序,计算2个有理数的和.差.积 ...

  10. C++中的栈内存和堆内存的区别

    数据结构中的堆与栈: 栈:是一种连续储存的数据结构,具有先进后出的性质.通常的操作有入栈(圧栈).出栈和栈顶元素.想要读取栈中的某个元素,就要将其之前的所有元素出栈才能完成.类比现实中的箱子一样. 堆 ...