使用Hystrix熔断(上)

在一个分布式系统里,一个服务依赖多个服务,可能存在某个服务调用失败,

        比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,

 

使用实现降级

1、复制项目并修改为新项目

    copy orderserver 为orderserverhystrix

        在项目右键修改名称orderserver为orderserverhystrix

        pom中修改artifactId为orderserverhystrix

        修改name为orderserverhystrix

        修改包名称luhq7.xdclass.orderserver为luhq7.xdclass.orderserverhystrix

        修改各种类名称增加hystrix

        在运行左侧的edit application中修改名称

2、增加依赖到pom文件

     <dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>

</dependency>

3、启动类增加注解

        @EnableCircuitBreaker

        

        关注注解@SpringCloudApplication,包含以下注解

            @Target({ElementType.TYPE})

            @Retention(RetentionPolicy.RUNTIME)

            @Documented

            @Inherited

            @SpringBootApplication

            @EnableDiscoveryClient

            @EnableCircuitBreaker

4、API接口编码实战

     熔断-》降级

 

        1)最外层api(controller包中)使用,好比异常处理(网络异常,参数或者内部调用问题)

            api方法上增加 @HystrixCommand(fallbackMethod = "saveOrderFail")

                

                save API中修改为

                 Map<String,Object> msg=new HashMap<>();

                            msg.put("code",0);

                            msg.put("msg",productOrderHystrixService.save(userId,productId));

                            return msg;

 

            编写fallback方法实现,方法签名一定要和api方法签名一致(注意点!!!)

 

                    private Object saveOrderFail(int userId,int productId)

                    {

                        Map<String,Object> msg=new HashMap<>();

                        msg.put("code",-1);

                        msg.put("msg","抢购人数太多!您被挤出来了,请稍等重试!");

                        return msg;

 

                    }

5、为了体现熔断,将product-server停止后再访问下

http://192.168.136.128:8769/api/v1/orderHystrix/save?userId=2&productId=2

 

ok

在订单服务中使用Hystrix进行熔断设置的更多相关文章

  1. SpringCloud实战-Hystrix请求熔断与服务降级

    我们知道大量请求会阻塞在Tomcat服务器上,影响其它整个服务.在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败.高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险 ...

  2. Hystrix请求熔断与服务降级

    Hystrix请求熔断与服务降级 https://www.cnblogs.com/huangjuncong/p/9026949.html SpringCloud实战-Hystrix请求熔断与服务降级 ...

  3. SpringCloud学习之Hystrix请求熔断与服务降级(六)

    我们知道大量请求会阻塞在Tomcat服务器上,影响其它整个服务.在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败.高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险 ...

  4. Hystrix介绍以及服务的降级限流熔断

    (dubbo熔断,Hystrix问的少) 无论是缓存层还是存储层都会有出错的概率,可以将它们视同为资源.作为并发量较大的系统,假如有一个资源不可用,可能会造成线程全部 hang (挂起)在这个资源上, ...

  5. SpringCloud微服务(03):Hystrix组件,实现服务熔断

    本文源码:GitHub·点这里 || GitEE·点这里 写在前面:阅读本文前,你可能需要熟悉一下内容. 微服务组件:Eureka管理注册中心 微服务组件:Ribbon和Feign服务调用 Sprin ...

  6. 服务容错保护断路器Hystrix之一:入门示例介绍(springcloud引入Hystrix的两种方式)

    限流知识<高可用服务设计之二:Rate limiting 限流与降级> 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的 ...

  7. SpringCloud开发学习总结(五)—— 服务容错保护Hystrix

    在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式相互依赖.但由于每个单元都在不同的进程中运行,一来通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身 ...

  8. 服务容错和Hystrix

    一.雪崩效应 在微服务架构中,通常有多个服务层调用,如果某个服务不可用,造成调用的服务也不可用,造成整个系统不可用的情况,叫做雪崩效应 二.Hystrix 放雪崩利器Hystrix,基于Netflix ...

  9. 服务容错保护断路器Hystrix之七:做到自动降级

    从<高可用服务设计之二:Rate limiting 限流与降级>中的“自动降级”中,我们这边将系统遇到“危险”时采取的整套应急方案和措施统一称为降级或服务降级.想要帮助服务做到自动降级,需 ...

随机推荐

  1. c++ 读取文件字符串 并且解析

    /* "/Users/macname/Desktop/aa-1.log" 链接:https://pan.baidu.com/s/1fKB5vXDe6bYOhoslc-kr7w  密 ...

  2. Hbase 错误记录分析(1) region超时问题

    错误现象: 默认等待时间是60秒,超过这个时间就报超时问题了.因此需调整超时时间,默认为60秒,在配置文件 hbase-site.xml中: 调整成10分钟 <property>    & ...

  3. Tkinter 之MessageBox弹出框

    一.参数说明 语法 作用 截图 tk.messagebox.showwarning(title='提示', message='你确定要删除吗?') 警告信息弹窗   tk.messagebox.sho ...

  4. QQ 为什么以 UDP 协议为主,以 TCP 协议为辅?

    QQ既有UDP也有TCP!不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态.这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000. UDP协议是无 ...

  5. unittest 的用法

    一.discover方法 discover方法可以根据标准加载用例,并将结果返回给测试套件(suite),start_dir:待测试的目录,pattern:测试用例文件名的匹配规. 如: start_ ...

  6. php - ftp 上传文件到远程服务器

    ccentos7服务器 ======================== 一.安装vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 二.vsf ...

  7. UVA:1600 巡逻机器人

    机器人要从一个m*n(m和n的范围都在1到20的闭区间内)的网格的左上角(1,1)走到右下角(m,n).网格中的一些格子是空地,用0表示,其它格子是障碍,用1表示.机器人每次可以往四个方向走一格,但不 ...

  8. Docs-.NET-C#-指南-语言参考-预处理器指令:#error(C# 参考)

    ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#error(C# 参考) 1.返回顶部 1. #error(C# 参考) 2015/07/20 #error 可从代码中的特定 ...

  9. Spring Cloud Eureka集群部署到Linux环境

    还是三板斧:先改配置文件,支持集群,然后出包,上传到linux环境(3个节点),最后启动jar包跑起来. 1.在原eureka服务端代码(参见Greenwich.SR2版本的Spring Cloud ...

  10. 算法习题---4-5IP网络(Uva1590)

    一:题目 给出m(1到10000之间)个IP地址,求他们最小的网络号和子网掩码 (一)样例输入 3 表示要获取的IP地址个数 194.85.160.177 IP地址 194.85.160.183 19 ...