问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

(4)SOFARPC 单机故障剔除剖析

发布网友 发布时间:2022-11-26 20:25

我来回答

1个回答

热心网友 时间:2023-10-12 10:52

二. 单机故障和服务降级

    2.1 SOFARPC故障剔除 vs 注册中心故障剔除

    2.2 服务权重降级 vs 服务降级

三. 单机故障原理解析

    3.1 整体结构和入口

    3.2 信息收集器(数据结构、窗口计算)

    3.3 度量策略   3.4 计算策略    3.5 降级策略  3.6 恢复策略

问题: 大量资金操作,网络、硬件导致系统不稳定,影响用户体验,资损。

           可用性常见方案  集群(冗余) ,避免单点问题, 避免不了 某些场景 单机故障引起服务调用失败

解决: SOFARPC 提供 自动单机故障剔除能力 ,自动 监控 RPC 调用 情况,对 故障节点 进行 权重降级 ,节点恢复健康时进行 权重恢复 ,提高系统可用性。

硬件负载 (每次请求都需要经过):集群规模增加、流量增多,无法支撑。

软负载: 提供 注册中心 ,将 负载能力 转移到 服务调用方 ( Consumer ),注册中心只有在 Consumer 首次订阅 或服务发生 变化 时才会 发生交互 , 避免 了并发访问下 单点问题 :

软负载 以下场景导致服务不可用:

(1)   挂: Provider (单点故障或宕机),与 Consumer 长连接断开 , 注册中心 尚未 摘除 或 未及时通知Consumer

(2)不好: 长连存在 , 注册中心未下发摘除 , 服务器 端由于某些原因 超时、异常 率高,如长时间 Full GC、硬件故障 、压力瓶颈。(此现象服务节点为 亚健康服务节点 )。

1不调用,2少调用;通过 权重控制 。流量到正常服务机器上。

SOFARPC 的 故障剔除 与 注册中心 故障服务 剔除 区别:

故障剔除的 时机、细粒度

1)注册中心 服务管理关注 Provider 与注册中心的 心跳或长连接 。如 Provider 心跳 异常 或长连接 不在 ,将服务从注册中心 剔除 ,告知 Consumer 移除本地缓存 的故障 Provider 信息。Comsumer 负载均衡选择时 不考虑被剔除 Provider:

2)SOFARPC 单机故障剔除:针对 注册中心未剔除服务 ,与 Consumer 仍然保持 长连接 ,但亚健康状态,不能提供正常服务:

注册中心剔除 : 单机上 某个服务进程(进程级别)。和注册中心 断开连接或无心跳 ,则从注册中心 剔除 。

SOFARPC 故障剔除 :细致到 进程对外暴露服务 (IP + 服务),部署在某个机器上的交易系统 对外提供的交易查询服务 TransQueryService(服务接口)

降级级别:整个系统服务,不是接口级别。

SOFARPC  服务降级:亚健康节点,导致接口响应异常

  维度: IP + 服务维度,如TransQueryService 服务。

采用 自动化监控和降级 。支持 单机 故障剔除能力, SOFARPC 提供几个方面设计:

(1)入口设计 : RPC调用时,增加 信息统计传递入口 。 不破坏开闭原则

(2)信息收集器  :   维护、管理 从入口传来的 统计信息

(3)计算策略  :  根据 度量结果 ,判断是否需要 降级或恢复 服务。触发降级、恢复行为。

(4)度量策略  : 按 一定 维度 对调用信息做 度量 ,判断服务正常或异常。

(5)降级策略  : 指定处理逻辑,如按 打印日志 或 降低权重 。

(6)恢复策略  :如何恢复该服务,如 提高权重 。

单机故障剔除能力(和链路追踪一样)基于 内核设计和总线设计 , 可插拔、零侵入 。

(1)模块 FaultToleranceMole , 通过 SOFARPC 的 SPI 机制完成模块的 自动化加载 ,完成插入。包含:

     subscriber 事件订阅器 : 通过订阅事件总线 EventBus 的事件, 零侵入 完成 RPC 调用 统计和信息收集 。

     regulator 调节器(核心): 根据收集的 RPC 调用信息,完成 服务调用 或服务 权重调节 ,服务降级、恢复。内置 信息收集器 、 计算、度量、恢复 策略。

(2)FaultToleranceMole 两种调用事件:

    同步结果事件: ClientSyncReceiveEvent , 收集和统计 RPC  同步   调用 和 异常 的次数。

    异步结果事件: ClientAsyncReceiveEvent ,收集和统计 RPC  异步   调用 和 异常 的次数。

FaultToleranceMole单机故障剔除功能 默认关闭 ,需开启 regulationEffective 全局开关 。

RPC 调用后会 向事件总线 EventBus 发送对应事件 。

FaultToleranceMole 订阅者 收到 对应事件,调用 统计 存储到 信息收集器 中(第一次存触发 Measure 定时任务 )。

Measure 获取信息交给 度量计算(调用计算策略) ,调用降级策略执行 降级、恢复操作 ,如打印日志或降低故障服务权重。

负载均衡器 (默认是 random + weight 负载均衡): 权重低流入少 。

CopyOnWriteArrayList 数据结构保证 线程安全 。

MeasureModel 按 app + service 维度存储,如交易系统中的交易查询服务 TransQueryService.  部署多个机器上, MeasureModel维护 这些所有服务,  InvocationStat 维护这些机器上服务 调用关系 。

假设两个服务 ApiGateWay 和 TransCenter分别部署在两台机器上。 TransCenter 向ApiGateWay 提供交易查询 (TransQueryService)服务

InvokeStat 是基于 consumer + provider + service 维度,InvokeStat1 表示 ApiGateway1 调用了 TransCenter-1 的 TransQueryService 服务。 TransCenter 的MeasureModel 数据模型结构如下:

InvokeStat用原子类保证并发安全 。订阅器收到结果,从 工厂中获取InvokeStat (InvokeStat存在直接返回,没有创建保持到缓存)。调用 invoke 和 catchException 方法统计 调用次数和异常次数 。

窗口到 期时 ,从 MeasueModel 各个 InvokeStat 创建镜像数据 ,表示当前 串口内调用 情况。 原 InvokeStat 进入 下个窗口 进行 统计 , 为扣除上一个窗口统计信息 因此该窗口数据 包含上个 窗口的统计 数据 。当度量策略将本窗口的镜像数据统计 完成以后 ,会将 InvokeStat 的数据 扣除 掉当前窗口的镜像数据,使 InvokeStat 中数据 为下个窗口调用 数据。

度量策略会计算 模型 MeasureModel 里的 数据度量 ,选 正常、异常节点 。 默认采用服务 水平 IP 资源度量策略 ,某个 IP 异常率 大于平均 判定异常。 

度量策略将计算模型设置为 三种状态 : HEALTH(正常)、ABNORMAL(异常)、IGNORE(忽略) 相互转化。

度量策略大致逻辑如下:

(1)统计该服务下所有 IP 平均异常率 averageExceptionRate= 异常总数 / 总调用次数 =(1 + 4) / (5 + 10 + 10) = 0.2

(2) IGNOGRE: 调用次数 小于 该服务 最小窗口 调用次数( leastWindCount ) 。否则降级和恢复度量。 如leastWindCount =6 , invokeStat 1 忽略

(3)异常率和服务平均异常比例 windowExceptionRate 大于 配置的 leastWindowExceptionRateMultiplte (最小时间窗口内异常率和服务平均异常率的降级比值), 为 ABNORMAL , 否则为 HEALTH

(4)windowExceptionRate 是 异常率 和 平均异常比例 ,invokeStat 1 : 4/5 = 0.8,   windowExceptionRate : 0.8 / 0.2 = 4。 假设   leastWindowExceptionRateMultiplte =4, invokeStat 1 是 一次服务 ,则需要进行 降级操作 。

根据度量结果,判断降级、恢复服务。

降级策略执行器 , 获取 到当前正在 度量接口和结果 ,对其权重进行 逐步降级 ,初始权重 100 为例

设置降级速率是 2,第一个窗口被降级 100/2=50 。第二次50/2=25, 达到最小权重 ,不再降。每次 Consumer 进行调用操作时能够被 负载均衡击中几率小很多 ,甚至无法击中。

正常权重为100,异常机器权重为1,恢复速率为2,在下个时间窗口中,触发恢复策略,1*2=2,2*2=4,直到达到默认权重100。

两种情况:(1) Consumer 客户端重启后, 收集器数据 因保存内存都会 消失 ,所有权重的计算都会 重新开始 。

                  (2)异常服务端(Provider)重启后,服务端正常服务,客户端在时间窗口内调用正常, 权重恢复 。

(1)SOFARPC 5.3.0 支持故障剔除功能 ,亚健康长连接降级,客户端请求指向健康节点。恢复后,逐渐将流量分发到该节点。 所有逻辑在客户端执行。

(2)SOFARPC 的内核设计和事件总线设计 ,不破坏开闭性。FaultToleranceMole 包含了两部分:

事件订阅 :订阅同步和异步结果事件,统计手机 RPC 调用信息入口。

调节器 :根据收集信息、内置策略,来 降级和恢复 。包含信息收集器、计算策略、度量策略、降级策略和恢复策略。

https://mp.weixin.qq.com/s/WusXmhMnsvQ1tQh5wiCyDw
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
阿托伐他汀钙片注意事项 阿托伐他汀钙片引起的肌无力需要治疗吗 阿托伐他汀与哪些药不能同吃 学生党推荐——PCB 免费打板,采集bom元器件 揭秘PCB线路板厂家的快速打板技巧 石竹有哪些花 石竹开花多久 石竹花期有多长 石竹花期是多久 石竹花开多久? [石竹花期]石竹什么时候开花 ...次5.0,第二次4.5!,怎么破,我考到5.5就好(是确保能5.5), 十二生肖中有什么动物是养在山上又算家里喂养的? 华为平板matepad11下不了hd select 表单怎么选中的值 夏普48s3a有音频光纤输出吗 珠海市美奥教育科技有限公司和珠海市思科教育科技有限公司哪个好 思科公司是虚拟经营吗 看图猜成语龟鳖组成语 什么中捉鳖成语 如何隐藏会员成长阶段如题 谢谢了 碳中和投资298是骗局吗 碳中和与个人财富增长(5):超级干货教你从零成立碳企业(上) 网址带EDU的学校能说明什么? 是网址后面带edu的就是公办的学校么 网址上有.edu的学校代表什么 网址中有edu就说明是真大学吗 oppo手机地震预警设置使用要收费吗 tab4和tab5手机图片文件夹里的图片如何删掉 Win10文件夹显示标签Tab上增加“说明”后显示不正常了? DDR与缓存是不是一个慨念? 离婚了三金归谁所有 尼康单反相机如何查看快门次数 尼康怎么看快门数 为什么有些手机微信会提示“窗口己达上限”? 我的偶像作文600字刘昊然作文 用刘昊然写一篇英语作文(6o个字) 刘昊然25岁海边生日写真曝光,如何评价他身上的“少年感”? 如何评价刘昊然的演技? c盘safemon可以删除吗(safemon是什么文件夹可以删除) win7系统开机出现360safemon文件夹,请问谁知道是怎么回事? 丹阳办营业执照在哪里? Python编程题40--验证字母表的顺序 端午相关的古诗句 端午艾草和清明的艾叶的区别 端午艾草和清明的艾叶的区别是什么 青蒿是不是艾草 青蒿和艾草的区别 QQ音乐怎么开启被其他应用中断后继续播放 南京聚拓化工科技有限公司怎么样? 济南聚拓生物科技有限公司怎么样? 河北聚拓汗蒸设备科技有限公司怎么样? 欲钱买披荆斩棘的动物 电脑怎么才能做收银机?详细点最好!需要什么材料?材料价格?