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