1

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映射的所有路径
  • ...
添加 actuator
1.添加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-ens33
ls

cat ip-static
cat ip-dhcp

# 动态分配ip
./ip-dhcp
ifconfig

# 指定固定ip
./ip-static
ip: 192.168.64.8

ifconfig

如果网络服务network.service服务无法启动,可能是和NetworkManager服务发送冲突,可以禁用NetworkManager

# 停止 NetworkManager 服务
systemctl stop NetworkManager

# 禁用 NetworkManager
systemctl disable NetworkManager

Rabbitmq虚拟机

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

./ip-static
ip:192.168.64.140

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


wusheng
12 声望12 粉丝