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

邢台网站建设信息优书网首页

邢台网站建设信息,优书网首页,长春网站优化策略,苏州疫情最新通告一、介绍: 1、雪崩: 多个微服务之间调用的时候,假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的"扇出"。如果扇出的链路上某个微服务的调用响应的时间过长或者不可用&am…

一、介绍:

1、雪崩: 多个微服务之间调用的时候,假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的"扇出"。如果扇出的链路上某个微服务的调用响应的时间过长或者不可用,对微服A的调用就会占用越来越多的系统资源,进而引起系统崩溃,即"雪崩效应"。对于高流量的应用来说,单一的后端依赖可能会导致所有的服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。所以,通常当一个模块下的某个实例失败后,这时候这个模块依然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩。

2、hystrix概念:

①Hystrix是一个用于处理分布式系统的延迟和容错的开源库,可以保证一个服务出现故障时,不会导致整个系统出现雪崩效应,以提高分布式系统弹性;

②作为“断路器”,在一个服务出现故障时,可以通过短路器监控,返回一个可以处理的响应结果,保证服务调用线程不会长时间被占用,避免故障蔓延。

3、作用:

(1)服务降级:

服务出现故障时,给故障服务降级到事先准备好的故障处理结果,将此结果返回给服务消费者,如:客户端访问服务1,服务1调用服务2,服务2出现故障,Hystrix服务降级,返回一个可以处理的结果给服务1,服务1再以友好的错误界面返回给客户端。

主要通过@HystriCommand注解方法实现,其中有两个关键参数,

  fallbackMethod:指定服务降级后调用方法,降级方法出参入参一定要和controller方法一致;

    commandProperties:相关参数。

(2)服务熔断:参数设置

①circuitBreaker.enabled:是否开启熔断;②circuitBreaker.requestVolumeThreshold:当前服务失败几次后开启断路,默认20次;③circuitBreaker.sleepWindowInMilliseconds:设置断路时间,过了该时间后会尝试恢复,在断路时间内,即使请求正确也会走降级方法;

 熔断类型

 ①熔断打开  打开后,在此时间内不会对该服务进行调用,而是直接访问降级方法。通过设置熔断时间,当达到该时间后,会尝试恢复该服务。

②熔断关闭  熔断关闭代表服务正常,不会干扰正常服务调用。

③熔断半开  熔断半开时,请求可以访问服务,若请求正常访问,则熔断会关闭;若请请求不正常,继续熔断,调用降级方法。

 4、使用介绍:

(1)pom依赖:

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

(2)@EnableCircuitBreaker类注解:项目启动类加上此注解,表示开启Hystrix。

二、服务降级demo:服务提供者、服务消费者都可以进行自身降级。在之前的基础上:

1、myspringcloud-eureka-client服务提供者组件降级:

(1)加上pom依赖

(2)加上@EnableCircuitBreaker注解

@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.demo.cloud.dao")
@EnableCircuitBreaker
public class MyEurekaClientApplication {public static void main(String args[]){SpringApplication.run(MyEurekaClientApplication.class,args);}
}

(3) 接口降级:

package com.demo.cloud.controller;@RequestMapping("/test")
@RestController
public class TestApiController {@Value("${server.port}")private String currPort;@HystrixCommand(fallbackMethod = "TimeoutHandler", commandProperties = {//2秒钟以内就是正常的业务逻辑@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")})@GetMapping("timeout")public String timeout() {try {//睡眠3秒TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}return "服务提供者正常返回";}//降级后方法,上面方法出问题,我来处理,返回一个出错信息public String TimeoutHandler() {return "我是服务提供者,当前不可用,请稍后再试";}
}

此时访问localhost:2222/myService/test/timeout

 

2、服务消费者myspringcloud-eureka-ribbon组件降级:步骤和上面差不多,不重复了,看接口降级

 @RequestMapping("/findByUserName")@HystrixCommand(fallbackMethod = "TimeoutHandler", commandProperties = {//2秒钟以内就是正常的业务逻辑@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")})public UserDTO findByUserName(String username){try {//睡眠3秒TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}HashMap<String,String> paramMap = new HashMap<>();paramMap.put("username",username);UserDTO userDTO = restTemplate.getForObject(REST_URL_PREFIX+"/user/findByUserName?username={username}",UserDTO.class,paramMap);return userDTO;}//降级后方法,上面方法出问题,我来处理,返回一个出错信息public UserDTO TimeoutHandler(String username) {System.out.println("我是服务消费者,当前不可用,请稍后再试");return null;}

可以看到返回为空,成功调用了降级方法。

三、服务熔断

http://www.dt0577.cn/news/12815.html

相关文章:

  • 人力资源公司网站建设同城推广有什么平台
  • 网站优化软件排行榜新榜数据平台
  • wordpress avada 3.4.3 中文关键词优化排名要多少钱
  • 网站建设技术交流淘宝代运营公司排名
  • 网站三要素怎么做百度知道在线问答
  • 大气金融投资企业网站模板石家庄关键词优化报价
  • 给女朋友做网站 知乎网站seo优化分析
  • 二月网站建设南宁会计培训机构
  • wordpress游戏网站外贸b2b平台都有哪些网站
  • 网站怎样做优化网页怎么去推广自己的公司
  • 聊城做网站最好的网络公司推广工具有哪些
  • 通过ip访问网站需要怎么做凡科网站官网
  • 织梦唯美网站源码南宁网站关键词推广
  • 开通招聘网站如何做分录seo网络营销推广排名
  • 带有数据库的网站模板网站关键词优化费用
  • 网页制作wordpress模板下载推送者seo
  • 网站毕业设计代做靠谱吗seo词条
  • 空投糖果网站开发域名被墙查询检测
  • 哪个网站名片做的号百度网盘app手机版
  • 合肥做网站的公司有哪些网络营销的主要特点有哪些
  • 长泰建设局网站十句经典广告语
  • 淘宝客做网站怎么操作高质量内容的重要性
  • 网站开发 毕业设计怎么快速刷排名
  • 做海报有哪些网站手机seo排名
  • 2022年互联网创业项目整站seo定制
  • 音乐网站开发的意义快速推广
  • 关于网站建设的申请旺道seo优化
  • 教育局网站建设方案泉州百度推广排名优化
  • 网站建设与管理好处百度投放
  • 自建团体电子商务网站建设成本关键词有哪几种