当前位置: 首页 > news >正文

哈尔滨网页设计百度官网优化

哈尔滨网页设计,百度官网优化,2024年新闻摘抄十条,户外媒体网站建设免费什么是断路器 断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果…

dc373ab1c3c247f8804cd34eb53f5e85.gif什么是断路器

 

 

断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。

 

在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。

 

Netflix Hystrix

在Spring Cloud中使用了Hystrix 来实现断路器的功能。Hystrix是Netflix开源的微服务框架套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。

 

下面我们来看看如何使用Hystrix。

 

准备工作

在开始加入断路器之前,我们先拿之前构建两个微服务为基础进行下面的操作,主要使用下面几个工程:

 

chapter9-1-1

eureka-server工程:服务注册中心,端口1111

compute-service工程:服务单元,端口2222

chapter9-1-2

eureka-ribbon:通过ribbon实现的服务单元,依赖compute-service的服务,端口3333

eureka-feign:通过feign实现的服务单元,依赖compute-service的服务,端口3333

若您还没有使用Spring Cloud的经验,可以先阅读《服务注册与发现》与《服务消费者》,对Spring Cloud构建的微服务有一个初步的认识。

 

Ribbon中引入Hystrix

依次启动eureka-server、compute-service、eureka-ribbon工程

访问http://localhost:1111/可以看到注册中心的状态

访问http://localhost:3333/add,调用eureka-ribbon的服务,该服务会去调用compute-service的服务,计算出10+20的值,页面显示30

关闭compute-service服务,访问http://localhost:3333/add,我们获得了下面的报错信息

 

Whitelabel Error Page

 

This application has no explicit mapping for /error, so you are seeing this as a fallback.

 

Sat Jun 25 21:16:59 CST 2016

There was an unexpected error (type=Internal Server Error, status=500).

I/O error on GET request for "http://COMPUTE-SERVICE/add?a=10&b=20": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect

pom.xml中引入依赖hystrix依赖

1

2

3

4

<dependency>

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

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

</dependency>

在eureka-ribbon的主类RibbonApplication中使用@EnableCircuitBreaker注解开启断路器功能:

 

@SpringBootApplication

@EnableDiscoveryClient

@EnableCircuitBreaker

public class RibbonApplication {

 

@Bean

@LoadBalanced

RestTemplate restTemplate() {

return new RestTemplate();

}

 

public static void main(String[] args) {

SpringApplication.run(RibbonApplication.class, args);

}

 

}

改造原来的服务消费方式,新增ComputeService类,在使用ribbon消费服务的函数上增加@HystrixCommand注解来指定回调方法。

 

@Service

public class ComputeService {

 

@Autowired

RestTemplate restTemplate;

 

@HystrixCommand(fallbackMethod = "addServiceFallback")

public String addService() {

return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();

}

 

public String addServiceFallback() {

return "error";

}

 

}

提供rest接口的Controller改为调用ComputeService的addService

 

@RestController

public class ConsumerController {

 

@Autowired

private ComputeService computeService;

 

@RequestMapping(value = "/add", method = RequestMethod.GET)

public String add() {

return computeService.addService();

}

 

}

验证断路器的回调

依次启动eureka-server、compute-service、eureka-ribbon工程

访问http://localhost:1111/可以看到注册中心的状态

访问http://localhost:3333/add,页面显示:30

关闭compute-service服务后再访问http://localhost:3333/add,页面显示:error

更多关于Hystrix的使用可参考How To Use

 

Feign使用Hystrix

注意这里说的是“使用”,没有错,我们不需要在Feigh工程中引入Hystix,Feign中已经依赖了Hystrix,我们可以在未做任何改造前,尝试下面你的操作:

 

依次启动eureka-server、compute-service、eureka-feign工程

访问http://localhost:1111/可以看到注册中心的状态

访问http://localhost:3333/add,调用eureka-feign的服务,该服务会去调用compute-service的服务,计算出10+20的值,页面显示30

关闭compute-service服务,访问http://localhost:3333/add,我们获得了下面的报错信息

 

Whitelabel Error Page

 

This application has no explicit mapping for /error, so you are seeing this as a fallback.

 

Sat Jun 25 22:10:05 CST 2016

There was an unexpected error (type=Internal Server Error, status=500).

add timed-out and no fallback available.

如果您够仔细,会发现与在ribbon中的报错是不同的,看到add timed-out and no fallback available这句,或许您已经猜到什么,看看我们的控制台,可以看到报错信息来自hystrix-core-1.5.2.jar,所以在这个工程中,我们要学习的就是如何使用Feign中集成的Hystrix。

 

使用@FeignClient注解中的fallback属性指定回调类

 

@FeignClient(value = "compute-service", fallback = ComputeClientHystrix.class)

public interface ComputeClient {

 

@RequestMapping(method = RequestMethod.GET, value = "/add")

Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);

 

}

创建回调类ComputeClientHystrix,实现@FeignClient的接口,此时实现的方法就是对应@FeignClient接口中映射的fallback函数。

 

@Component

public class ComputeClientHystrix implements ComputeClient {

 

@Override

public Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b) {

return -9999;

}

 

}

再用之前的方法验证一下,是否在compute-service服务不可用的情况下,页面返回了-9999。

http://www.mmbaike.com/news/108418.html

相关文章:

  • 南京电子商务网站开发公司网店运营入门基础知识
  • 最简单的cms网站怎么做seo技术服务外包
  • 网站建设平台汉龙百度推广开户免费
  • 门户网站模式网页优化
  • 做30个精品网站长沙网站定制
  • 中山公司网站制作线上推广费用预算
  • 怎么在微信上做网站网站优化排名软件
  • 企业网站相关案例国家高新技术企业认定
  • 汉口网站制作湖南网站营销推广
  • 公司网站必须做可信认证吗站长工具网址查询
  • wordpress模板更改优化大师官方免费
  • 建设部网站危房鉴定标准规定实时热搜榜榜单
  • 长沙装修公司电话抖音seo怎么收费
  • 企业建网站的 程序域名收录提交入口
  • 网站建设列表网国外市场网站推广公司
  • 毛坯房最便宜装修方法360排名优化工具
  • 做公司的网站大概多少钱seo关键词优化排名哪家好
  • 完本小说做多的网站百度下载安装官方下载
  • 成都网站开发的公司班级优化大师免费下载
  • 南山网站设计公司什么是网络营销策划
  • 河北建设厅网站6关键词排名优化营销推广
  • 擦边球网站怎么做十大免费excel网站
  • 苏州制作网站哪家好深圳百度seo怎么做
  • 优惠券网站要怎么做推广网站制作设计
  • jsp动态网站开发 图书重庆排名优化整站优化
  • 网站备案时间多久seo网站推广实例
  • 重庆忠县网站建设公司哪家好自动交换友情链接
  • 淘宝网站建设可以申请赔款百度手机网页版入口
  • 深圳网站建设平台cfa一级看多久两分钟
  • 做电脑系统网站兰州快速seo整站优化招商