java B2B2C Springcloud仿淘宝电子商城系统-断路器监控
断路器
断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。
在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。
断路器监控
在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面
改造项目
复制项目 spring-cloud-ribbon-consumer-hystrix
,修改名称 spring-cloud-ribbon-consumer-hystrix-dashboard
在它的基础上进行改造。 Feign
的改造和这一样。
在 pom
的工程文件引入相应的依赖:
<dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-hystrix </artifactId> </dependency> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-actuator </artifactId> </dependency> <dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-hystrix-dashboard </artifactId> </dependency>
开启 HD
修改 RibbonConsumerApplication.java
类
在程序的入口 RibbonConsumerApplication
类,加上 @EnableHystrix
注解开启断路器,这个是必须的,并且需要在程序中声明断路点 @HystrixCommand;
加上 @EnableHystrixDashboard
注解,开启 `HystrixDashboard
package io.ymq.example.ribbon.consumer.hystrix;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.netflix.hystrix.EnableHystrix;import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;import org.springframework.context.annotation.Bean;..import org.springframework.web.client.RestTemplate;@EnableHystrix@EnableDiscoveryClient@EnableHystrixDashboard@SpringBootApplicationpublic class RibbonConsumerApplication { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); public static void main(String[] args) { SpringApplication.run(RibbonConsumerApplication.class, args);
声明断路点
声明断路点 @HystrixCommand(fallbackMethod="defaultStores")
package io.ymq.example.ribbon.consumer.hystrix; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; * 描述:调用提供者的 `home` 方法 * @author yanpenglei @RestController public class ConsumerController { @Autowired private RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "defaultStores") @GetMapping(value = "/hello") public String hello() { return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody(); public String defaultStores() { return "feign + hystrix Dashboard ,提供者服务挂了"; }
@HystrixCommand
表明该方法为 hystrix
包裹,可以对依赖服务进行隔离、降级、快速失败、快速重试等等 hystrix
相关功能 该注解属性较多,下面讲解其中几个
fallbackMethod
降级方法
commandProperties
普通配置属性,可以配置 HystrixCommand
对应属性,例如采用线程池还是信号量隔离、熔断器熔断规则等等
ignoreExceptions
忽略的异常,默认 HystrixBadRequestException
不计入失败
groupKey()
组名称,默认使用类名称
commandKey
命令名称,默认使用方法名
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java B2B2C Springboot多租户电子商城系统-Spring Cloud Gateway
简介 Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。本文首先用官方的案例带领大家来体验下Spring Cloud的一些简单的功能,在后续文章我会使用详细的案例和源码解析来详细讲解Spring Cloud Gateway. 创建工程 本案例的的源码下载于官方案例,也可以在我的Github上下载。工程使用的Spring Boot版本为2.0.5.RELEASE,Spring Cloud版本为Finchley.SR1。 新建一个工程,取名为sc-f-gateway-first-sight在工程的pom文件引用工程所需的依赖,包括spring boot和spring cloud,以及gateway的起步依赖spring-cloud-starter-gateway,代码如下: <parent> <groupId>org.springframework.boot</groupId> <artifac...
- 下一篇
更开放的分布式事务 | Fescar 品牌升级,更名为 Seata
Thanks, Fescar️ Hello, Seata 升级后,一起再出发。 近日,分布式事务 Fescar 更名为 Seata。在 GitHub 上的项目地址相应的变更成: https://github.com/seata/seata. 分布式事务产生背景 随着互联网技术快速发展,数据规模增大,分布式系统越来越普及,采用分布式数据库或者跨多个数据库的应用在中大规模企业普遍存在,而一个业务活动执行过程中可能会被意外中断(比如网络超时、数据库超时、机器重启、机器宕机等),我们很难保证一个业务活动的所有操作能 100% 全部成功。因此,微服务化过程中急需一种能保证业务一致性的方案,分布式事务应运而生。 分布式事务在阿里巴巴和蚂蚁金服的发展历程 作为覆盖金融、云计算、新零售等多重领域的阿里经济体两端,蚂蚁金服和阿里巴巴在分布式事务上共同发力
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主