手记

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

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

课程章节:5-7

课程讲师少林码僧

课程内容

  • 什么是降级

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

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

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

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

  • 通过熔断避免服务雪崩

    • 有损的降级

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

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

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

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

    • 依赖服务不可用

    • 响应的时间过长

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

  • 降级的实现方式

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

    • 降低返回结果的准确度

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

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

    • 延迟执行

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

  • 降级需要考虑的问题

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

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

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

课程收获



0人推荐
随时随地看视频
慕课网APP