降级:

减少工作量,丢弃不重要的请求。

确定具体采用哪个指标作为流量评估和优雅降级的决定性指标:

如 CPU、延迟、队列长度、线程数量、错误等

当服务进入降级时,需要执行什么动作?

流量抛弃或者优雅降级应该在服务的哪一层实现?是否需要在整个服务的每一层都实现,还是可以选择某个高层面的关键节点来实现?

优雅降级不应该被经常出发,通常触发条件是容量规划的失误,或者是意外的负载

内部参与的项目,聚合多个部门的接口进行展示,配置了降级逻辑,设计的足够简单,因为平常是不怎么使用的,如果特别复杂等到需要使用的时候操作比较复杂。

应该足够简单 -- 演练

重试:

当请求返回错误,对于backend部分节点过载的情况下,倾向于立刻重试,但是需要留意重试带来的流量放大

限制重试次数和基于重试分布的策略(重试比率:10%)

随机化、指数型递增的重试周期:exponential ackoff+jtter

client 测记录重试次数直方图,传递到server,进行分布判断,交由server判定拒绝

只应该在失败的这层进行重试,当重试仍然失败,全局预定错误码,过载,无须重试,避免级联重试

503 逐层放行,往上抛

负载均衡:

数据中心内部的负载均衡

理想情况下,某个服务的负载回完全均匀地分发给所有后端任务。

在任何时刻,最忙和最不忙的节点永远消耗同样数量的CPU.

目标:

均衡的流量分发

可靠的识别异常节点

scale-out,增加同质节点扩容

减少错误,提高可用性

backend 之间的load差异比较大:

每个请求的处理成本不同

物理机环境的差异:

服务器很难强同质性

存在共享资源争用(内存缓存、带宽、IO等)

性能因素:

FullGc

JVM JIT

负载均衡算法:缺乏的是服务端全局视图,负载+可用性

选择backend:CPU,client:health、inflight、latency,

使用一个简单的线性方程进行打分

p2c 算法:本质就是根据服务器的各种资源进行打分计算,然后选择合适的节点进行请求。

https://github.com/go-kratos/kratos/blob/v1.0.x/pkg/net/rpc/warden/balancer/p2c/p2c.go

对新启动的节点使用常量惩罚值(penalty),以及使用探针方式最小化放量,进行预热。

打分比较低的节点,避免进入 永久 黑名单,而无法恢复,使用统计

衰减的方式,让节点指标逐渐恢复到初始状态(即默认值)

go 进阶训练营 微服务可用性(下)笔记的更多相关文章

  1. 微服务架构下分布式Session管理

    转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...

  2. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践

    本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享.编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云4 ...

  3. Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转

    原文地址:http://mp.weixin.qq.com/s/eXvoJew3bjFKzLLJpS0Otg 随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台.就像前边的文章说的, ...

  4. kratos微服务框架学习笔记一(kratos-demo)

    目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...

  5. SpringCloud微服务框架复习笔记

    SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...

  6. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  7. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...

  8. 微服务框架下的思维变化-OSS.Core基础思路

    如今框架两字已经烂大街了,xx公司架构设计随处可见,不过大多看个热闹,这些框架如何来的,细节又是如何思考的,相互之间的隔离依据又是什么...相信很多朋友应该依然存在自己的疑惑,特别是越来越火热的微服务 ...

  9. SpringBoot微服务架构下的MVC模型总结

    SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...

  10. 大规模微服务架构下的Service Mesh探索之路

    小结: 1. 第一.二代Service Mesh meetup-slides/敖小剑-蚂蚁金服-大规模微服务架构下的Service Mesh探索之路.pdf https://github.com/se ...

随机推荐

  1. 容器引擎-Docker

    Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级.可移植的.自给自足的容器.Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响. ...

  2. BUUCTF--Dangeous RSA(小e)

    对于e很小,可以直接采取爆破的手段,直接上代码 点击查看代码 #python3 ## -*- coding: utf-8 -*-# import binascii from gmpy2 import ...

  3. Redis 过期键删除和内存淘汰策略【Redis 系列之四】

    〇.前言 对于 Redis 服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费. 那么,本文将结合博主收集的资料,简单介绍下过期键删除.内存淘汰两个策略,仅供参考. 博主 Re ...

  4. 详细介绍Java的SPI机制

    一.什么是SPI机制 SPI(Service Provider Interface),是JDK内置的一种 服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.s ...

  5. Ubuntu v22配置用户临界值

    方法 1:使用 pam_faillock(推荐,Ubuntu 22.04 默认方式) pam_faillock 是较新的 PAM 模块,用于记录失败登录尝试并在达到限制后锁定账户. 修改 /etc/p ...

  6. px转rem适配方案之postcss-pxtorem

    一.安装 npm install postcss-pxtorem --save-dev 二.增加postcss.config.js文件 在目录文件下增加postcss.config.js并添加相关配置 ...

  7. python发送QQ邮件,自定义邮件内容

    怎么发QQ邮件,网上的例子很多,就不介绍了,具体可参考:https://www.jianshu.com/p/0f8c5e4e7054 这里主要把自定义邮件内容写一下 # -*- coding: utf ...

  8. 揭秘AI编排爆火真相:从"人工智障"到"真正智能"的关键一跃

    当行业还在追捧大模型参数竞赛时,领先团队早已转向新战场: AI编排(Agent Orchestration)-- 这个方向是 AI 技术"从聊天到做事"的关键突破口. 1.为什么说 ...

  9. kubelet 创建 Pod 前发生了什么?

    Kubelet Watch 到新增的 Pod,需要做的主要有以下几件事: 管理 Pod 状态,除了更新本地缓存,还要同步给 API server 计算节点的资源是否足够创建 Pod 创建 Cgroup ...

  10. 解决get请求特殊字符问题

    @Bean public ServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory fa = new Tom ...