乐趣区

关于java:SpringCloud学习03

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

退出移动版