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

胶州网站建设公司哪家好全国一级建造师网

胶州网站建设公司哪家好,全国一级建造师网,武清做网站,大型门户网站建设费用前言 解决问题: 主要防止服务器集群发生雪崩, 起到对服务器的保护作用 GitHub地址#xff1a;https://github.com/Netflix/Hystrix/wiki 1 Hystrix是什么 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系#xff0c;每个依赖关系在某些时候将不…前言 解决问题: 主要防止服务器集群发生雪崩, 起到对服务器的保护作用 GitHub地址https://github.com/Netflix/Hystrix/wiki 1 Hystrix是什么 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系每个依赖关系在某些时候将不可避免地失败。 1.1.1 服务雪崩 多个微服务之间调用的时候假设微服务A调用微服务B和微服务C微服务B和微服务C又调用其它的微服务这就是所渭的“扇出“如果扇出的链路上某个微服务的调用响应时间过长或者不可用对微服务A的调用就会占用越来越多的系统资源进而引起系统崩溃所谓的雪崩效应 对于高流量的应用来说单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是这些应用程序还可能导致服务之间的延迟增加备份队列线程和其他系统资源紧张导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理以便单个依赖关系的失败不能取消整个应用程序或系统。 所以通常当你发现一个模块下的某个实例失败后这时候这个模块依然还会接收流量然后这个有问题的模块还调用了其他的模块这样就会发生级联故障或者叫雪崩。 1.2 是什么 Hystrix是一个用于处理分布式系统的延迟和容错的开源库在分布式系统里许多依赖不可避免的会调用失败比如超时、异常等Hystrix能够保证在一个依赖出问题的情况下不会导致整体服务失败避免级联故障以提高分布式系统的弹性。 “断路器”本身是一种开关装置当某个服务单元发生故障之后通过断路器的故障监控类似熔断保险丝向调用方返回一个符合预期的、可处理的备选响应FallBack而不是长时间的等待或者抛出调用方无法处理的异常这样就保证了服务调用方的线程不会被长时间、不必要地占用从而避免了故障在分布式系统中的蔓延乃至雪崩。 2 Hystrix的主要功能 熔断当服务压力过大错误比例过多时熔断所有请求所有请求直接降级降级超时、出错、不可到达时对服务降级返回错误信息或者是缓存数据 2.1熔断 服务熔断熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时会进行服务的降级进而熔断该节点微服务的调用快速返回错误的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况当失败的调用到一定阈值缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是HystrixCommand。 10秒内20次请求50%调用失败执行了降级代码会触发熔断 熔断可以避免故障的传播避免引起雪崩效应 限流后台服务压力过大出现故障可以断开连接限制访问流量 熔断的条件(两个条件必须都满足) 10秒20次请求(首先满足) 50%失败执行了降级代码 2.2 降级 一个服务调用后台服务失败(出现异常、等待超时、不能连接)可以执行当前服务中的一段代码向前返回响应(错误提示、缓存数据) 系统容错当后台服务出现错误还可以向客户端返回结果 3、使用 3.1 熔断的使用 3.1.1 创建module子项目 首先在原有微服务基础上创建microservicecloud-provider-dept-hystrix-8001服务子服务。 3.1.2 修改pom文件 添加依赖 !-- hystrix --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-hystrix/artifactId/dependency3.1.3 修改yml文件 主要修改的是 instance-id: microservicecloud-dept8001-hystrix #自定义hystrix相关的服务名称信息 目的是方便查看注册的服务名称 server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径type-aliases-package: com.zyz.springcloud.entities # 所有Entity别名类所在包mapper-locations:- classpath:mybatis/mapper/**/*.xml # mapper映射文件spring:application:name: microservicecloud-deptdatasource:type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包url: jdbc:mysql://localhost:3306/cloudDB01 # 数据库名称username: rootpassword: rootdbcp2:min-idle: 5 # 数据库连接池的最小维持连接数initial-size: 5 # 初始化连接数max-total: 5 # 最大连接数max-wait-millis: 200 # 等待连接获取的最大超时时间eureka:client: #客户端注册进eureka服务列表内service-url: # defaultZone: http://localhost:7001/eurekadefaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8001-hystrix #自定义hystrix相关的服务名称信息prefer-ip-address: true #访问路径可以显示IP地址info:app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$ 3.1.4 修改DeptController 一旦调用服务方法失败并抛出了错误信息后会自动调用HystrixCommand标注好的fallbackMethod调用类中的指定方法 RestController public class DeptController {Autowiredprivate DeptService service null;RequestMapping(value /dept/get/{id}, method RequestMethod.GET)/*** 一旦调用服务方法失败并抛出了错误信息后会自动调用HystrixCommand标注好的fallbackMethod调用类中的指定方法*/HystrixCommand(fallbackMethod processHystrix_Get)public Dept get(PathVariable(id) Long id){Dept dept this.service.get(id);if (null dept) {throw new RuntimeException(该ID id 没有没有对应的信息);}return dept;}public Dept processHystrix_Get(PathVariable(id) Long id){return new Dept().setDeptno(id).setDname(该ID id 没有没有对应的信息,null--HystrixCommand).setDb_source(no this database in MySQL);} } 3.1.5 修改启动类 添加注解EnableCircuitBreaker//对hystrixR熔断机制的支持 SpringBootApplication EnableEurekaClient //本服务启动后会自动注册进eureka服务中 EnableDiscoveryClient //服务发现 EnableCircuitBreaker//对hystrixR熔断机制的支持 public class DeptProvider8001_Hystrix_App {public static void main(String[] args){SpringApplication.run(DeptProvider8001_Hystrix_App.class, args);} }3.1.6 测试 启动过程 1、启动eureka集群2、启动8001服务将服务注册到eureka中3、启动80服务 服务消费 3.2 降级的使用 整体资源快不够了忍痛将某些服务先关掉待渡过难关再开启回来。 服务降级处理是在客户端实现完成的与服务端没有关系 3.2.1 修改 microservicecloud-api 服务 根据已经有的DeptClientService接口新建一个实现了FallbackFactory接口的类DeptClientServiceFallbackFactory Component // 不要忘记添加不要忘记添加 public class DeptClientServiceFallbackFactory implements FallbackFactoryDeptClientService {Overridepublic DeptClientService create(Throwable throwable){return new DeptClientService() {Overridepublic Dept get(long id){return new Dept().setDeptno(id).setDname(该ID id 没有没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭).setDb_source(no this database in MySQL);}Overridepublic ListDept list(){return null;}Overridepublic boolean add(Dept dept){return false;}};} } 3.2.2 添加注解 修改microservicecloud-api工程DeptClientService接口在注解FeignClient中添加fallbackFactory属性值 /*** author zyz* version 1.0* data 2023/2/20 21:04* Description:修改microservicecloud-api工程根据已经有的DeptClientService接口* 新建** 一个实现了FallbackFactory接口的类DeptClientServiceFallbackFactory*/ FeignClient(value MICROSERVICECLOUD-DEPT,fallbackFactoryDeptClientServiceFallbackFactory.class) public interface DeptClientService {RequestMapping(value /dept/get/{id}, method RequestMethod.GET)public Dept get(PathVariable(id) long id);RequestMapping(value /dept/list, method RequestMethod.GET)public ListDept list();RequestMapping(value /dept/add, method RequestMethod.POST)public boolean add(Dept dept); }3.2.3 修改服务fegin负载均衡的yml文件 microservicecloud-consumer-dept-feign工程修改YML feign:hystrix:enabled: true3.2.4 测试 启动步骤 1、启动eureka集群2、启动8001服务注册服务3、启动feigin 发现服务 访问地址 查看集群情况在这里插入代码片 http://localhost:800/consumer/dept/get/1关停8001服务、、模拟宕机 完整源码地址GitHub代码仓库 参考资料1、熔断器 2、Hystrix断路器
http://www.hkea.cn/news/14290838/

相关文章:

  • 网站备案流程图成都企业如何建网站
  • 申请163邮箱注册关键词推广优化
  • 广州专业的免费建站百度网站分析工具
  • 陕西做网站的公司在哪品牌定位 品牌
  • 免费网站建设公司联系方式公司网页设计代码
  • 江苏省建设部官方网站建设项目立项网站
  • 娄底本地做寄生虫网站中国互联网站建设中心
  • 网站备案需要多久时间c 开发手机网站开发
  • 蚂蜂窝网站分析wordpress nginx安装
  • 那些网站可以注册域名网店服务平台
  • 广州货运网站建设广告传媒公司简介范文
  • 番禺区移动端网站制作有哪些网站可以做店面设计
  • 中国空间站进展建设银行陕西分行网站
  • jsp商务网站建设宁波市网站集约化建设通知
  • 中国建设银行钓鱼网站旅游景区网站建设
  • 网站个人中心模板用模板做的网站不好优化
  • 做网站不带优化的吗wordpress滑块教程
  • 网站如何在百度软文推广文案
  • 潍坊网站制作公司网站程序 不能创建文件夹
  • 张家界市网站建设设计提供电商网站建设
  • 网站建设后预期推广方式怎样修改wordpress密码
  • iis7 添加php网站开发一个商城网站多少钱
  • 网站的角色设置如何做湖北seo服务
  • 如何免费做网站的教程四川建筑人才招聘网
  • 网站建设平台网站设计论坛搭建教程
  • 吉林省建设监理协会网站全面的聊城网站建设
  • 江苏南京建设局官方网站域名解析到别的网站
  • 30岁做网站运营今天发生的重大新闻
  • 河北省城乡建设培训网官方网站抖音流量推广神器软件
  • 网站建设空间多大网站后台不显示验证码