【金秋打卡】第13天 构建微服务设计架构知识体系--服务降级

2022/11/8 3:24:04

本文主要是介绍【金秋打卡】第13天 构建微服务设计架构知识体系--服务降级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:海量数据高并发场景,构建Go+ES8企业级搜索微服务

课程章节:5-7

课程讲师:少林码僧

课程内容

  • 什么是降级

    • 通过降低回复调用方的质量来减少系统的工作量

    • 比如,当推荐系统出问题,可以直接返回预设的一些默认商品展示

    • 比如,可以预先设置一些缓存,在服务降级后,返回这些缓存,尽管质量不高,但是能用

    • 暂时关闭一些功能也是降级的一种服务,比如,在双十一的时候,会暂时关闭退款退货窗口

  • 通过熔断避免服务雪崩

    • 有损的降级

    • 局部故障引发全局故障,我们称之为 雪崩

    • 比如,在电商项目中,登录,订单都是核心服务,而消息队列可能不是核心服务,核心服务调用其他的非核心服务资源不足导致核心服务被阻塞,比如订单系统调用消息队列,但是消息队列阻塞或者崩了,订单无法完成

    • https://img1.sycdn.imooc.com/63675e490001043f15750999.jpg比较常见的降级就是断路器模式。当失败累计到一定次数,断路器打开,在断路器关闭服务到一定时间,进入半开状态,放行部分请求,如果请求再次出现失败,并且累计一定次数,断路器进入全开模式,禁止任何请求。如果半开状态下,成功达到一定次数,则断路器关闭,放行所有流量。

  • 通常那些情况需要触发降级

    • 依赖服务不可用

    • 响应的时间过长

    • 吞吐量过大(IO/流量)

  • 降级的实现方式

    • 对服务进行顶级,尽可能让非核心服务先降级,可以通过一个全局的配置来约定服务级别,服务降级的条件,服务降级的恢复条件,

    • 降低返回结果的准确度

    • 请求短路,不走DB,直接给缓存

    • 简化流程,放弃部分操作,比如下单后不立即通知

    • 延迟执行

    • 关闭某些功能或者定时脚本

  • 降级需要考虑的问题

    • 定期小规模演练和测试,保证功能正常

    • 降级条件不应该过于苛刻,不应该经常被处罚

    • 降级应该有通知,下游调用方应该能感知并被告知服务降级

课程收获

https://img1.sycdn.imooc.com/636761f20001b8f113301064.jpg





这篇关于【金秋打卡】第13天 构建微服务设计架构知识体系--服务降级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程