- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
亿级流量架构之服务降级思路与方法
假如看过我前面对服务限流的分析,理解服务降级就很简约了,对于一个景区,平常任凭进出,但是一到春节或者十一国庆这种情况客流量激增,那么景区会限制同时进去的人数,这叫限流,那么什么是服务降级呢?
简约来说就是,将一些不太重要的景区项目砍掉,平常就那么三五八个人,景区可以开放湖中游泳啦,摸鱼啦,捉虾啦,有情况工作人员可以下湖捞你,但是现在客流量大了,工作人员关注不过来,都在湖里闲逛万一沉了不太平安,大手一挥,这个项目砍了,将工作人员安排在其他地方。
在互联网中也有类似的降级措施,像之前双11, 有段时间是只允许下单不允许退单或者改单,这样做目的是什么呢?
还是为了保证服务的可用性,当硬件软件优化到肯定的程度还是有上限,这时候将资源重点倾斜给核心业务,那些不太重要的就砍掉,保证服务的可用性。
服务等级定义
服务等级定义 SLA(Service Level Agreement)是判定压测能否特别的重要依据。压测过程中,通过监控核心服务形态的 SLA 目标数据,可以更直观地了解压测业务的形态。
SLA则是服务商与您达成的正常运转时间保证。
关于这个的具体解释,可以参考阿里云的引见:?服务等级定义SLA ,这儿不过多描述,SLA 分为网络服务和云服务,供应商的在线保证率通常要求达到6个9。
6个9含义
6个9指99.9999%,也就是一个服务有99.9999%概率是平安的,6个9有多平安呢?
2个9 = (1-99%)X24 X 365 = 87.6 小时 = 3.65天
3个9 = (1-99.9%)X24 X 365 = 8.76 小时
4个9 = (1-99.99%)X24 X 365 = 0.876 小时 = 52.56分钟
5个9 = (1-99.999%)X24 X 365 = 0.0876 小时 = 5.256分钟
6个9 = (1-99.9999%)X24 X 365 = 0.00876 小时 = 0.5256分钟 = 31秒
也就是,一年当中,6个9的平安性最多会有31s服务是不行用,相对来说是极高的。
降级处理
兜底数据
这方面有很多例子,比如某些页面挂了会前往寻亲子网。可以对一些关键数据设置一些兜底数据,例如设置默认值、静态值、设置缓存等。
默认值: 设置平安的默认值,不会引起数据问题的值,比如库存为0
静态值:恳求的页面或api无法前往数据,供应一套静态数据呈现,比如加载失败提示重试,或者寻亲子网,或者跳到默认菜单,给用户一个略微好一点的体验。
缓存: 缓存无法更新便使用旧的缓存
限流降级
限流顾名思义,提前对各个类型的恳求设置最高的QPS阈值,若高于设置的阈值则对该恳求直接前往,不再调用后续资源,也就是当流量洪峰到达的时候,可能需要丢弃一部分用户来保证服务可用性,对于丢弃的用户可以供应友好的提示,比如提示用户当前繁忙、稍后重试等。
限流需要结合压测等,了解系统的最高水位,也是在实际开发中应用最多的一种稳定性保障手段。当服务器压力剧增的情况下,依据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运转。
超时降级
对调用的数据设置超时时间,当调用失败时,对服务降级,举个例子,当访问数据已经超时了,且这个业务不是核心业务,可以在超时之后进行降级,比如商品详情页上有推举内容或者评价,但是可以降级显示评价临时不显示,这对次要的用户功能——购物,不产生影响,假如是近程调用,则可以商量?一个双方都可以接受的最大响应时间,超时则自动降级。
毛病降级
假如近程调用的服务器挂了(网络毛病、DNS毛病、HTTP服务前往错误),则可以进行降级, 例如前往默认值或者兜底数据或者静态页面,也可以前往之前的缓存数据。
重试/自动处理
客户端高可用:供应多个可调用的服务地址,这样做
微服务重试:dubbo重试机制
API调用重试:当达到重试次数后,添加访问标记,服务降级,异步探测服务能否恢复。
WEB端:在服务不行用时,web端添加重试按钮或自动重试可以供应更友好的体验。
自动重试需设置重试次数和数据幂等处理
降级开关
在服务器供应支持期间, 假如监控到线上一些服务存在问题,这个时候需要临时将这些服务去掉,有时候通过服务调用一些服务,但是服务依靠的数据库可能存在,网卡被打满了,数据库挂了,很多慢查询等等,此时要做的就是暂停相关的系统服务,也就是人工使用开关降级。开关可以放在某地,定期同步开关数据,通过推断开关值来打算能否做出降级。
开关降级还有一个作用,例如新的服务版本刚开发处在灰度测试阶段,不太确定里面的规律等等能否正确,假如有问题应当可以依据开关的值切回旧的版本。
在服务调用方设置一个flag,标记服务能否可用,另外key可以存储存储在在本地,也可以存储在第三方的配置文件
您可能关注的文档
- Sentinel 实现限流,竟是如此的简单!.docx
- Sentinel流量控制和熔断降级执行流程与源码分析.docx
- Spark性能优化实战手册.pdf.docx
- Spring Boot 无侵入式 实现API接口统一JSON格式返回.docx
- Spring Boot 最流行的 条实践解读,值得收藏!.docx
- SpringBoot 源码解析——SpringBoot 中的日志基础服务.docx
- SpringBoot 源码解析——源码模块功能分析.docx
- SpringBoot中的全局异常处理.docx
- SpringBoot源码解析——BeanDefinitionLoader 源码分析.docx
- “” 是如何支撑百万 QPS 的?.docx
文档评论(0)