作者:潘罡 (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信息

最新文章

  1. swift 命令
  2. Hadoop_UDTF示例
  3. sql 循环处理表数据中当前行和上一行中某值相+/-
  4. 网络开始---多线程---NSThread-01-基本使用(了解)(二)
  5. Push推送原理
  6. C#获取相对路径
  7. cocos2dx中导演的职责有哪些?
  8. poj 3261 Milk Patterns(后缀数组)(k次的最长重复子串)
  9. 最新xgboost python32位下安装xgboost
  10. 跳跃表 C#
  11. WebApiContrib
  12. 给自己的QQ群开启腾讯官方的群聊机器人
  13. IE之页面加载慢.
  14. ant安装和验证
  15. connection reset by peer
  16. elasticsearch技术解析与实战(一) 入门和索引
  17. linux系统编程之文件与IO(一):文件描述符、open,close
  18. LeetCode——Single Number II
  19. ENC28J60
  20. Python爬虫-正则表达式基础

热门文章

  1. mac 上面安装 tree 命令
  2. Teamwork#3,Week5,Scrum Meeting 11.20
  3. Task 6.2冲刺会议六 /2015-5-19
  4. bug排查
  5. EF 小数位的保留
  6. 转 彻底理解js中的&&和||
  7. startActivityForResult()的用法(超好用啊)
  8. day02--Python基础二(基础数据类型)
  9. C# 调用 taskkill命令结束服务进程
  10. VMware 虚拟机 不能上网 CentOS 6.5 Windows 7上面安装了VMware,然后安装了CentOS系统,安装完了无法上网;