作者:潘罡 (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. reduce()用法

    reduce()方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值 参数 callback 执行数组中的每个值的函数,包含四个参数 previousValue 上一次调用回调 ...

  2. idea最常使用的快捷键

    撤销 反撤销 : Ctrl+Z / Ctrl+Shift+Z 删除一行 : Ctrl+Y 跳到实现类 : Ctrl+Alt+B 重命名文件:   shift+F6 控制台放大缩小: ctrl+shif ...

  3. js备忘录1

    新建对象 赋值和取值操作 var book={ topic:"JavaScript", fat: true }; book.topic  通过点访问 book["fat& ...

  4. Beta版本互评

    基于NABCD评论作品,及改进建议 经过alpha发布之后,迫不及待的使用了psp daily这款软件,使用非常方便,基本的功能都可以实现,经过beta周之后,我对这款产品非常期待,希望能给我更友好的 ...

  5. Linux基础入门--06

    简单的文本处理 实验介绍 这一节我们将介绍这几个命令:tr.col.join.paste 1.tr: -d:删除和set1匹配的字符,不是全词匹配也不是按字符顺序匹配 -s:除去指定的连续并重复的字符 ...

  6. 第二阶段Sprint6

    昨天:设置统一保存路径为内存卡,实现可以选择播放已有的视频 今天:将“录制”及“保存”整合到一起,修复出现的Bug,使之能够正常运行. 遇到的问题:感觉调的摄像头录制的画面不好,这怎么办啊?

  7. POJ 1112 Team Them Up! 二分图判定+01背包

    题目链接: http://poj.org/problem?id=1112 Team Them Up! Time Limit: 1000MSMemory Limit: 10000K 问题描述 Your ...

  8. vim python和golang开发环境配置

    首先在-下新建目录.vim和配置文件.vimrc,.vimrc内容如下: syntax on set nocompatible filetype off set rtp+=~/.vim/bundle/ ...

  9. scrapy-下载器中间件

    from faker import Faker class MySpiderMiddleware(object): def __init__(self): self.fake = Faker() de ...

  10. PHP 常用函数总结(二)

    4.PHP处理数据库的常用函数. 汇总表 PHP 5 MySQLi 函数 函数 描述 mysqli_affected_rows() 返回前一个 Mysql 操作的受影响行数. mysqli_autoc ...