作者:潘罡 (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. C++ 游戏之点点水果

    大二时利用C++编写的点水果小游戏 程序代码总共3个文件,main.cpp Fruit.h Fruit.cpp  代码将在图片下面给出 至于讲解,由于过了一年多的时间,有点忘记了,但我会努力回忆并即时 ...

  2. 循环队列的C语言实现

    生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构.队列分为链式队列和 ...

  3. js 刷新当前页面会弹出提示框怎样将这个提示框去掉

    //禁止刷新提示window.onbeforeunload = function() { var n = window.event.screenX - window.screenLeft; var b ...

  4. git add -A 和 git add . 的区别

    git add -A和 git add .   git add -u在功能上看似很相近,但还是存在一点差别 git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文 ...

  5. HBase 架构与工作原理1 - HBase 的数据模型

    本文系转载,如有侵权,请联系我:likui0913@gmail.com 一.应用场景 HBase 与 Google 的 BigTable 极为相似,可以说 HBase 就是根据 BigTable 设计 ...

  6. error_reporting 报错

    <?php // 关闭所有PHP错误报告 error_reporting(0); // 报告简单的运行错误 error_reporting(E_ERROR | E_WARNING | E_PAR ...

  7. 【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍

    大型网站的HTTPS实践(二)——HTTPS加密算法介绍 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:09:43  358  0 前言 在上一篇文章中,我们简要 ...

  8. 半夜思考之查漏补缺 , Spring 中的 Bean 继承机制

    这里的继承 , 不是 Java 中的继承 , 下面就总结下 Bean继承与Java继承的区别: Spring 中的子类 Bean 和父 Bean 可以是不同类型 , 但是 Java 中的继承则可保证子 ...

  9. Gulp 项目简单构建,自动刷新页面

    /** * Created by 1900 on 12/18/2015. */ var plugins={ fs:require("fs"), gulp:require(" ...

  10. IE下Userdata本地化存储

    这两天看了下Discuz x2发帖的实时保存机制,涉及到本地化存储,所以上网查了下,Firefox等支持HTML5的浏览器使用window.localStorage或window.sessionSto ...