Service Fabric Placement and Load Balancing
作者:潘罡 (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进行数据交互。
将这一块放大,流程如下:
- FM收到新建Service命令
- FM向PLB发布更新Service请求并通知Service类型(比如Stateful或者Stateless等)
- FM更新Failover Unit缓存,并向PLB发送Primary Replica ID等信息
- PLB向FM回复Primary Replica的placement信息
- FM发送Secondary Replica ID等信息
- PLB向FM回复Secondary Replica的placement信息
Service Fabric Placement and Load Balancing的更多相关文章
- 拥抱Service Fabric —— 目录
理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...
- 微服务框架之微软Service Fabric
常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...
- Service Fabric Failover Manager
作者:潘罡 (Van Pan)@ Microsoft 什么是Failover Manager 我们回到Service Fabric系统架构图. Failover Manager是Reliability ...
- 转:微服务框架之微软Service Fabric
常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...
- 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...
- 【架构】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 ...
- 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 ...
- Network Load Balancing Technical Overview--reference
http://technet.microsoft.com/en-us/library/bb742455.aspx Abstract Network Load Balancing, a clusteri ...
- Service Fabric 与 Ocelot 集成
概要 云应用程序通常都需要使用前端网关,为用户.设备或其他应用程序提供同一个入口点. 在 Service Fabric 中,网关可以是任意无状态服务(如 ASP.NET Core 应用程序) . 本文 ...
随机推荐
- C++ 游戏之点点水果
大二时利用C++编写的点水果小游戏 程序代码总共3个文件,main.cpp Fruit.h Fruit.cpp 代码将在图片下面给出 至于讲解,由于过了一年多的时间,有点忘记了,但我会努力回忆并即时 ...
- 循环队列的C语言实现
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构.队列分为链式队列和 ...
- js 刷新当前页面会弹出提示框怎样将这个提示框去掉
//禁止刷新提示window.onbeforeunload = function() { var n = window.event.screenX - window.screenLeft; var b ...
- git add -A 和 git add . 的区别
git add -A和 git add . git add -u在功能上看似很相近,但还是存在一点差别 git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文 ...
- HBase 架构与工作原理1 - HBase 的数据模型
本文系转载,如有侵权,请联系我:likui0913@gmail.com 一.应用场景 HBase 与 Google 的 BigTable 极为相似,可以说 HBase 就是根据 BigTable 设计 ...
- error_reporting 报错
<?php // 关闭所有PHP错误报告 error_reporting(0); // 报告简单的运行错误 error_reporting(E_ERROR | E_WARNING | E_PAR ...
- 【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍
大型网站的HTTPS实践(二)——HTTPS加密算法介绍 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:09:43 358 0 前言 在上一篇文章中,我们简要 ...
- 半夜思考之查漏补缺 , Spring 中的 Bean 继承机制
这里的继承 , 不是 Java 中的继承 , 下面就总结下 Bean继承与Java继承的区别: Spring 中的子类 Bean 和父 Bean 可以是不同类型 , 但是 Java 中的继承则可保证子 ...
- Gulp 项目简单构建,自动刷新页面
/** * Created by 1900 on 12/18/2015. */ var plugins={ fs:require("fs"), gulp:require(" ...
- IE下Userdata本地化存储
这两天看了下Discuz x2发帖的实时保存机制,涉及到本地化存储,所以上网查了下,Firefox等支持HTML5的浏览器使用window.localStorage或window.sessionSto ...