go 进阶训练营 微服务可用性(下)笔记
降级:
减少工作量,丢弃不重要的请求。
确定具体采用哪个指标作为流量评估和优雅降级的决定性指标:
如 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 进阶训练营 微服务可用性(下)笔记的更多相关文章
- 微服务架构下分布式Session管理
转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...
- TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践
本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享.编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云4 ...
- Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转
原文地址:http://mp.weixin.qq.com/s/eXvoJew3bjFKzLLJpS0Otg 随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台.就像前边的文章说的, ...
- kratos微服务框架学习笔记一(kratos-demo)
目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...
- SpringCloud微服务框架复习笔记
SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...
- CI Weekly #5 | 微服务架构下的持续部署与交付
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- 微服务框架下的思维变化-OSS.Core基础思路
如今框架两字已经烂大街了,xx公司架构设计随处可见,不过大多看个热闹,这些框架如何来的,细节又是如何思考的,相互之间的隔离依据又是什么...相信很多朋友应该依然存在自己的疑惑,特别是越来越火热的微服务 ...
- SpringBoot微服务架构下的MVC模型总结
SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...
- 大规模微服务架构下的Service Mesh探索之路
小结: 1. 第一.二代Service Mesh meetup-slides/敖小剑-蚂蚁金服-大规模微服务架构下的Service Mesh探索之路.pdf https://github.com/se ...
随机推荐
- windows下测试TCP/UDP端口连通性
一.简介 最近调试项目的时候有需要测试UDP连接,所以顺便研究了一下. MaQaQ:省流,不介意下载工具的话就直接拉到最后看Advanced Port Scanner. 二.TCP 1.telnet( ...
- Oracle return exit continue
常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then ...
- Firebug Lite——在没有调试工具的浏览器(如IE6-7)中调试
现在做前端的应该是蛮幸福的,现在主流的浏览器都自带了调试工具,如 Firefox Chrome IE8+ 等,方便了网页开发时的一些调试.但是类似IE6的调试还是非常的不方便.但是发现一个调试神器-- ...
- 如何使用 OpenAI Agents SDK 构建 MCP
1.概述 OpenAI Agents SDK 现已支持 MCP(模型上下文协议),这是 AI 互操作性的重大变革.这使开发人员能够高效地将 AI 模型连接到外部工具和数据源.本篇博客,笔者将指导使用 ...
- 学习unigui【25】关于图标
网上有不少介绍. 自己的经验: 是否需要下载文件fontawesome-free-6.5.1-web(),没有研究.说ext_js已经下载配套了. 我很懒,得过且过. 1.下载fontawesome- ...
- GStreamer开发笔记(一):GStreamer介绍,在windows平台部署安装,打开usb摄像头对比测试
前言 当前GStreamer是开源的多媒体框架,其适配后可以支持板卡的硬编码.硬解码,还提供RTSP服务器等功能,降低了音视频开发的门槛(转移到gstreamer配置和开发上了,但是跨平台),瑞芯 ...
- Python+Selenium+unittest实例
代码如下: # coding=utf-8 import time import unittest from selenium import webdriver class BaiduSearch(un ...
- 请求参数的绑定(获取请求数据)、请求参数是一个POJO
一. @Controller @RequestMapping("/parem") public class ParamController { /** * springmvc接受请 ...
- ctf.show刷题记录_web(1-10)
ctf平台(ctfshow) `https://ctf.show/ 1.签到 解题:base64解码 ctfshow{0da357d0-359b-47e1-80dc-5c02212725e5} 2.w ...
- Linux From Scratch 12.2 systemd 编译安装成功留念
Linux From Scratch 12.2 Systemd 留念 Linux From Scratch 12.2 Systemd 总耗时约一周完结.写下这篇以作留念. 要始终把精力放在解决问题上面 ...