zoukankan      html  css  js  c++  java
  • 小D课堂

    笔记:



    第五章 互联网架构服务降级熔断 Hystrix 实战


    1、分布式核心知识之熔断、降级讲解
        简介:系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案

        1、熔断:
            保险丝,熔断服务,为了防止整个系统故障,包含子和下游服务

            下单服务 -》商品服务
                    -》用户服务 (出现异常-》熔断)

        2、降级:
            抛弃一些非核心的接口和数据

            旅行箱的例子:只带核心的物品,抛弃非核心的,等有条件的时候再去携带这些物品

            
        3、熔断和降级互相交集
            相同点:
                1)从可用性和可靠性触发,为了防止系统崩溃
                2)最终让用户体验到的是某些功能暂时不能用

            不同点
                1)服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制
            


     

    开始

    订单里面有userName 还需要去调用用户的的服务

    我们现在还没有开发用户服务,我们现在先假定有用户服务。这里需要去调用用户的服务获取userName



    生成订单的时候,调用用户的服务,用户服务机房网络中断,无法链接。造成无法下单。

    调用用户服务一直失败,触发熔断。订单调用用户服务几次失败后,有一个阀值,例如有50%的记录失败的话就标记当前这个服务不可用,那么后后续其他请求进来的时候就不再去调用了。直接调用商品的服务保存到数据库里,这里就没再调用用户的服务。调用用户服务会出现异常或者响应延迟 这是一个有损的,不调用用户服务一样可以完成下单,我们当前这里例子里面有userId也是可以标明用户的,。只不过是拿不到用户的会员信息和用户名称 。这是当前的这个例子而言

    这样用户一样可以完成下单,如果没有熔断的话,可能就一直调用用户服务,一直失败,无法完成下单
    有了熔断,不再去调用用户服务一样完成基本的操作下单,只不过拿不到会员信息。
    用户服务不止是订单服务去调用还可能给其他业务系统调用,可能给登陆服务,手机端app等都会调用用户的服务。做熔断,防止不可用。

    降级

    抛弃一些非核心的接口和数据
    例如双11的时候够买一个商品。真正核心的是商品的信息销量和库存,只返回核心的,非核心的相关推荐啊之类的 就可以过了高峰期过了之后再返回

    对用户而言能完成的正常的下单流程。非核心的相关推荐等被抛弃

     

    熔断和降级

    相同点:
                1)从可用性和可靠性触发,为了防止系统崩溃
                2)最终让用户体验到的是某些功能暂时不能用

            不同点
                1)服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制
     

  • 相关阅读:
    redis线程模型
    同步容器和并发容器
    200+面试题
    redis pipeline
    redis事务和脚本
    redis事务
    redis优缺点
    redis持久化策略
    Redis为什么要把所有数据放到内存中?
    redis的过期策略以及内存淘汰机制
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11448056.html
Copyright © 2011-2022 走看看