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 依赖
- @EnableHystrixDashboard
- 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 离线安装文件