Hystrix

零碎容错工具

  • 降级

    • 调用近程服务失败(宕机、500错、超时),能够降级执行以后服务中的一段代码,向客户端返回后果
    • 疾速失败
  • 熔断

    • 当拜访量过大,呈现大量失败,能够过热爱护,断开近程服务不再调用
    • 限流
    • 避免故障流传、雪崩效应

降级

1.hystrix依赖
2.启动类注解@EnableCircuitBreaker
3.增加降级代码

//当调用近程服务失败,跳转到指定的办法,执行降级代码@HystrixCommand(fallbackmethod="办法名")近程调用办法(){    restTemplate.getForObject(url,..)}

Hystrix超时

Hystrix有默认的超时工夫: 1秒

Hystrix超时要大于ribbon总的重试工夫,否则,ribbon重试可能有效

Hystrix熔断

断路器关上的条件:

  • 10秒内20次申请(必须首先满足)
  • 50%失败,执行了降级代码

断路器关上后,所有申请间接执行降级代码

断路器关上几秒后,会进入半开状态,客户端调用会尝试向后盾服务发送一次调用,
如果调用胜利,断路器能够主动敞开,恢复正常
如果调用任然失败,持续放弃关上状态几秒钟

Hystrix故障监控-Hystrix Dashboard

Hystrix利用Actuator工具,来裸露Hystrix的故障日志

Actuator

springboot提供的日志监控工具,能够裸露我的项目中多种监控信息

  • 衰弱状态
  • 零碎环境变量
  • spring容器中所有的对象
  • spring mvc映射的所有门路
  • ...
增加 actuator1.增加actuator依赖2.yml配置裸露监控数据    m.e.w.e.i="*"       裸露所有的监控    m.e.w.e.i=health    只裸露衰弱状态    m.e.w.e.i=["health","beans","mappings"] 裸露指定的多个监控

搭建Hystrix Dashboard

仪表盘能够是一个齐全独立的我的项目,与其余我的项目都无关,也不必向注册表注册
1.hystrix dashboard 依赖

  1. @EnableHystrixDashboard
  2. yml-容许对哪台服务器开启监控
hystrix:    dashboard:        proxy-stream-allow-list: localhost

Feign

近程调用: RestTemplate
ribbon
hystrix

集成工具

  • 近程调用:申明式客户端
  • ribbon负载平衡和重试
  • hystrix和熔断

申明式客户端接口

只须要申明一个形象接口,就能够通过接口做近程调用,不须要再应用RestTemplate来调用

//调用近程的商品服务,获取订单的商品列表//通过注解, 配置://1. 调用哪个服务//2. 调用服务的哪个门路//3. 向门路提交什么参数数据@FeignClient(name="item-service")public interface ItemnClient(){    @GetMapping("/{orderId}")    JsonResult<List<Item>> getItems(@PathVariable String orderId);}

在这里应用@GetMapping("/{orderId}"),指定的是向近程服务调用的门路

Feign集成Ribbon

0配置,曾经启用了负载平衡和重试
默认重试参数:

  • MaxAutoRetries: 0
  • MaxAutoRetriesNextServer: 1
  • ReadTimeout: 1000

虚拟机

课前材料\虚拟机\

  • centos-7-1908.zip 实用于VMware15以上的虚拟机
  • centos-7-1908-vmware-12.zip 实用于VMware 12或以上的虚拟机

2.双机centos-7-1908.vmx文件(三个窗口图标)
3.启动这个虚拟机
按提醒抉择"已复制虚拟机"
4.登录
username:root
password:root

重置VMqare虚构网络

VMware的虚构网络十分不稳固,经常出现问题

  • 没有ip
  • 没有网卡
  • 一切正常,但ping不通

重置VMwaare虚构网络环境:
删除所有的虚构网卡,再从新创立,初始化网络
1.编辑-虚构网络编辑器
2.点右下角"更改设置"取得管理员权限
3.左下角"还原默认设置"按钮

设置NAT 网络网段: 192.168.64.0

编辑-虚构网络编辑器
抉择VMware8网卡
上面网段设置成192.168.64.0

设置centos7-1908的ip

# 在/root/ 主目录下筹备了两个脚本程序: ip-static 和 ip-dhcp# 外面批改网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33lscat ip-staticcat ip-dhcp# 动态分配ip./ip-dhcpifconfig# 指定固定ip./ip-staticip: 192.168.64.8ifconfig

如果网络服务network.service服务无奈启动,可能是和NetworkManager服务发送抵触,能够禁用NetworkManager

# 进行 NetworkManager 服务systemctl stop NetworkManager# 禁用 NetworkManagersystemctl disable NetworkManager

Rabbitmq虚拟机

1.从centos-7-1908克隆: rabbitmq
2.设置ip

./ip-staticip:192.168.64.140

3.用mobaxterm连贯rabbitmq
4.上传rabbitmq离线安装文件