熔断机制,指的是微服务架构中,由于某个服务瘫痪,为避免影响整个系统而采取的降级服务

简述:

由于网络或自身原因,服务不能确保一定可用。如果某个服务出现了问题,调用方的大量请求会使Servlet容器的线程资源被耗尽,导致服务瘫痪。而且这种故障会传播,进而威胁到这个微服务系统可用性

示例如下:基于springboot1.5.10

添加依赖:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>1.5.10.RELEASE</version>

</dependency>

<!--Eureka 客户端-->

<dependency>

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

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

<version>1.4.3.RELEASE</version>

</dependency>

<!--hystrix断路器-->

<dependency>

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

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

<version>1.4.3.RELEASE</version>

</dependency>

application配置

server:

port: 8901 #程序启动端口,也是Tomcat端口

spring:

application:

name: customer-order-hystrix #应用别名

eureka:

client:

service-url:

defaultZone: http://user:123@localhost:10000/eureka

instance:

instance-id: ${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}

prefer-ip-address: true

  启动类

@SpringBootApplication

@EnableEurekaClient

@EnableCircuitBreaker //启用熔断

public class CustomerHystrixApplication

{

@Bean

public RestTemplate getTemp(){

return new RestTemplate();

}

public static void main( String[] args )

{

SpringApplication.run(CustomerHystrixApplication.class,args);

System.out.println("customer start-up success");

}

}

实体类

public class User {

private Long id;

private Date date;

public User() {

}

public User(Long id) {

this.id = id;

this.date = new Date();

}

public void setId(Long id) {

this.id = id;

}

public void setDate(Date date) {

this.date = date;

}

public Long getId() {

return id;

}

public Date getDate() {

return date;

}

Controller

@RestController

public class CustomeController {

@Autowired

private EurekaClient eurekaClient;

@Autowired

private RestTemplate restTemplate;//springboot提供的用于访问rest接口的对象

@GetMapping("/order/{id}")

@HystrixCommand(fallbackMethod = "errora1")

public User getOrder(@PathVariable Long id){

InstanceInfo instanceInfo = eurekaClient.getNextServerFromEureka("provider-user", false);

String homePageUrl = instanceInfo.getHomePageUrl();

// 访问提供者,获取数据

User user = restTemplate.getForObject(homePageUrl+"/user/" + id,User.class);//通过访问rest获取json数据,然后转换成user对象

return user;

}

/**

* 失败后执行的回调函数

* @param id

* @return

*/

public User errora1(Long id) {

User user = new User();

user.setId(-1000L);

user.setDate(new Date());

return user;

}

}

  注:回调函数和其使用者应返回相同的类型,这里省略了服务提供者模块 provider-user

来源:https://www.cnblogs.com/jincheng81/p/12575186.html

喜欢对你有帮助的话记得加个关注不迷路哦

还有关注我私信回复【资料】可以领取到一些个人收集的面试及电子书资料,或许对你有帮助!

《Java学习、面试;文档、视频资源免费获取》

springcloud熔断机制相关推荐

  1. SpringCloud熔断机制大概什么意思

    什么是springcoud的熔断机制,熔断机制是对分布式架构项目的一种起到保护作用的手段或者机制,就像继电器里面的保险丝,到达某个临界点就会自动熔断保险丝,以达到保护电路的作用,切换到SpringCl ...

  2. php熔断机制,springcloud熔断机制(示例代码)

    熔断机制,指的是微服务架构中,由于某个服务瘫痪,为避免影响整个系统而采取的降级服务 简述: 由于网络或自身原因,服务不能确保一定可用.如果某个服务出现了问题,调用方的大量请求会使Servlet容器的线 ...

  3. SpringCloud进阶-Hystrix的熔断机制+Hystrix的工作流程

    提示:本文主要对SpringCloud中的Hystrix的熔断机制和工作流程进行总结 文章目录 前言 一.简介 1.熔断是什么 二.实操 1.实现 2.测试 三.总结 1.大神结论 2.熔断类型 3. ...

  4. [SpringCloud] 入门-第四篇: 熔断机制 hystrix

    1. hystrix hystrix对应的中文名字是"豪猪",豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制, 所以开发团队取了这个名字. (⊙o⊙)- 为什么要用 ...

  5. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝 ...

  6. SpringCloud:Hystrix 熔断机制(基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢?当现在服务的提供方出现了问题之后整个的程序将出现错误的信息显示, ...

  7. SpringCloud微服务的熔断机制和熔断的意义?

    什么是微服务的熔断机制 在2017年2月1日,GitLab公司的运维人员就出现过这样的事故.当时运维人员在进行数据库维护时,通过执行rm -rf命令,删除了约300GB生产环境数据.由于数据备份失效, ...

  8. springcloud 熔断不生效_深入理解SpringCloud与微服务构建

    目录 一.SpringCloud微服务技术简介 二.开发框架SpringBoot 三.服务注册和发现Ereka 四.负载均衡 五.申明式调用 六.熔断器 七.路由网关 八.配置中心 九.服务链路追踪 ...

  9. 服务降级 熔断机制

    一.服务降级 1.什么是降级? 降级是从系统功能优先级的角度考虑如何应对系统故障. 服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证 ...

最新文章

  1. bootstraptable 加载完成_bootstrap table onLoadSuccess加载服务端数据成功事件
  2. 攻防世界easyJava(re Moble)
  3. 线程,代码和数据–多线程Java程序实际运行的方式
  4. vim 插件之commentary
  5. mysql window下 安装udf_Windows下MySQL下载安装、配置与使用
  6. MyEclipse 报 String cannot be resolved to a type
  7. STM32中的串口通信
  8. Linux升级ssh、ssl
  9. Dijkstra算法(朴素,堆优化)+例题
  10. vba宏语言_Excel VBA(1) – VBA 简介及录制宏
  11. c语言网吧计费管理小项目,c语言网吧计费系统小项目.doc
  12. Mac下Chrome 浏览器右键菜单需双击的问题
  13. c语言合并jpg成pdf,JPG在线转换成PDF文件的简单方法
  14. 赵雅智_名片夹(5)_Android中listview可折叠伸缩仿手风琴效果(动态)
  15. linux快捷键锁定屏幕,天天Linux-Ctrl+S快捷键锁定屏幕的问题
  16. 采用 redis主从 + 哨兵(sentinel) + vip漂移搭建一套redis高可用集群
  17. 团宝网股权太分散融资难加夫妻店管理诟病
  18. 为什么大家都想进入IT行业?IT行业到底好不好?
  19. BUGKU——秋名山/never give up
  20. linux系统常用命令

热门文章

  1. 正则中常见的4种匹配模式
  2. java线程知乎_全网独家!知乎20K点赞的Java并发多线程笔记,简直堪称神仙级文档...
  3. 解决Coursera视频打不开、访问速度慢等问题
  4. 增加tomcat的性能和稳定性
  5. RLException:Unable to contact my own server at
  6. window.speechSynthesis.speak 不能自动执行问题
  7. 怎么把amr格式转换为mp3格式?
  8. Spring 循环依赖 以及解决方式
  9. Spring循环依赖详解
  10. c语言编程数码管显示文字,c语言编程数码管的显示