微服务学习之路--Springcloud之降级与熔断

(好久没写东西了,之前学习的Springcolud因其他事情落下了,现去到了个新的学校,不能让让自己越来越懒,就又捡起来了,继续学习)

一理论知识:

  1. 降级
    个人理解:就是对服务的"降级",服务也有主次之分,将非核心任务按照一定策略地进行降级,以此缓解服务器地压力,释放资源来服务于核心任务,来保证核心服务的正常工作.比如常见双十一,618等等剁手节,流量激增,这时就会用到相关技术来解决服务器压力过大而导致宕机或服务挂掉…

  2. 熔断
    个人理解:好比如保险丝,电路过载会烧毁保险丝,以保证电路安全.程序中的熔断,一般当服务出现异常或错误等出现时,就会熔断服务,保证整个系统的安全,若不然可能会一整等待服务响应,直至500或其他.这时就起到了保护的作用.

  3. 熔断和降级互相交集
    1.相同点:
    1)从可用性和可靠性来看,有效的防止系统崩溃,服务错误等
    2)在用户体验上,相比于500页面或无响应,还是比较好的
    2.相同点:
    1) 服务熔断一般是子服务,附属,下游服务等故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制

  4. Hystrix

1.是什么

文档地址:
https://github.com/Netflix/Hystrix
https://github.com/Netflix/Hystrix/wiki

Netflix(一家在线影片租赁商)开源了其Hystrix库,这是一个针对分布式系统的延迟和容错库
Hystrix 供分布式系统使用,提供延迟容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。

2.为什么要用
通常在一个分布式系统里,一个服务会依赖多个服务,可能存在某个服务调用失败,
比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,
这时我们可以通过Hystrix来解决

二:代码编程
tips:编程实现目标:(项目依然是上次的项目)调用订单服务接口,模拟商品服务宕机或故障等,利用Hystrix熔断服务,返回错误信息

订单服务新增依赖:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

订单服务启动类新增注解:

@EnableCircuitBreaker

订单接口新增注解:

@HystrixCommand(fallbackMethod = "ErrorFallback")

ErrorFallback是一个方法名,用来处理熔断后的数据返回,保证用户体验,
新增方法:

    /**
     * 参数必须和API接口参数一致
     */
    public Object ErrorFallback(int userId, int product) {
        HashMap<Object, Object> map = new HashMap<>();
        map.put("ststus", -1);
        map.put("msg", "发生异常");
        return map;
    }

启动注册中心:发现俩服务
注册中心
测试订单接口,进行下单操作:

http://localhost:8781/api/v1/order/save?userId=123&productId=1

数据响应:
订单接口数据响应
现在我将商品服务关闭后访问订单接口进行下单:
订单接口错误信息
写的太随意,粗制烂叶的,有错误地地方还望路过的老铁指出,谢谢
最后附上项目地址:https://github.com/xt962464/Eureka_demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值