第五阶段day02

Hyxtrixweb

系统容错工具
降级
熔断spring

image.png

image.png

微服务宕机时 ribbon没法转发请求vim

降级: 调用远程服务失败(异常 超时 服务不存在),能够经过执行当前服务中的一段代码来向客户端发回响应centos

降级响应 : 错误提示 返回缓存数据缓存

快速失败:即便后台服务失败 也要让客户端尽快获得错误提示 而不能让客户端等待服务器

添加降级
1.添加Hystrix依赖
2.启动类添加@EnableCircuitBreaker 注解网络

启动断路器 断路器的两个核心功能
降级: 超时 出错 不可到达时 对服务降级 返回错误信息或者是缓存数据
熔断: 当服务压力过大时 错误比例过多时 熔断全部请求 全部请求直接降级app

3.添加降级代码tcp

在远程调用方法上添加
@HystrixCommand(fallbackMethod="降级方法名")
完成降级方法 返回降级响应

hystrix超时微服务

超时设置

在yml文件中添加

hystrix:
command:

default:
  execution:
    isolation:
      thread:
        timeoutInMilliseconds: 500

默认1秒超时 执行降级
若是配置了ribbon重试 重试还会继续执行 最终重试结果无效

Hystrix超时>=Ribbon总的超时时长

hystrix熔断

整个链路达到必定的阈值,默认状况下,10秒内产生超过20次请求,则符合第一个条件。
知足第一个条件的状况下,若是请求的错误百分比大于阈值,则会打开断路器,默认为50%。
Hystrix的逻辑,先判断是否知足第一个条件,再判断第二个条件,若是两个条件都知足,则会开启断路器

断路器打开 5 秒后,会处于半开状态,会尝试转发请求,若是仍然失败,保持打开状态,若是成功,则关闭断路器

当请求量增大 出现过多错误 hystrix能够和后台服务断开链接(过热保护)
能够避免雪崩效应 故障传播

限流措施

流量过大时形成服务故障 能够断开服务 下降它的流量

在特定条件下会自动触发熔断
1.10秒内20次请求(必须首先知足)
2.50%出错 执行了降级代码

3个数值均可以改变

半开状态下能够自动恢复

断路器打开几秒后 进入半开状态 尝试发送请求
若是请求成功自动关闭断路器恢复正常
若是请求失败 再保持打开状态几秒

Hystrix监控仪表盘 监控Hystrix降级和熔断的错误信息

image.png

hystrix对请求的降级和熔断 能够产生监控信息 hystrix dashboard能够实时的进行监控

1.添加actuactor依赖 并暴露hystrix监控端点

image.png

2.配置yml文件 并暴露hystrix.stream监控端点

management:
endpoints:

web:
  exposure:
    include: hystrix.stream

访问路径 http://localhost:3001/actuator 查看监控端点

image.png

建立项目
添加hystrix dashboard依赖
配置yml文件

spring:
application:

name: hystrix-dashboard

server:
port: 4001

eureka:
client:

service-url:
  defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

hystrix:
dashboard:

proxy-stream-allow-list: localhost

主程序添加
@EnableHystrixDashboard注解

访问测试
http://localhost:4001/hystrix

填写hystrix的监控端点 开启监控

http://localhost:3001/actuator/hystrix.steram

image.png

image.png

虚拟机的配置

VMware提供了虚拟网络环境 有多块虚拟网卡

它的虚拟网络常常出现问题 能够还原默认设置 删除全部的虚拟网卡从新建立

NAT网络网段
VMware会随机自动分配网段 选择VMware8网卡 将网段改成64

设置NAT网络的ip地址

NetworkManager服务于network.service服务有冲突 会引发网络没法设置ip 网卡丢失的状况

禁用NetworkManager服务

systemctl stop NetworkManager

systemctl disable NetworkManager

自动获取ip

设置ip 要修改一个网卡的配置文件

/etc/sysconfig/network-scripts/
vim /ifcfg-ens33

自动获取ip
./ip-dhcp
ip addr
ifconfig

设置固定ip

./ip-static
ip:192.168.64.8

idconfig

ping www.baidu.com (ctrl+c结束)

Rabbitmq虚拟机

1.克隆centos-7-1908:rabbitmq
2.设置固定ip
./ip-static
ip:192.168.64.140

ifconfig

3.用Mobaxterm链接140服务器

将rabbit-install解压并将目录上传到/root

切换到rabbit-install目录
cd rabbitmq-install
安装
rpm -ivh *.rpm

启动rabbitmq服务器

systemctl enable rabbit-server 设置服务 开机自动启动

systemctl start rabbit-server 启动服务

rabbitmq管理界面

启动管理界面

开启管理界面插件
rabbitmq-plugins enable rabbitmq_management

防火墙打开 15672 管理端口
firewall-cmd --zone=public --add-port=15672/tcp -- permanent
firewall-cmd --reload

重启RabbitMQ服务

systemctl restart rabbitmq-server

访问服务器的15672端口

http://192.168.64.140:15672

添加用户

添加用户
rabbitmqctl add_user admin admin

新用户设置用户为超级管理员
rabbitmqctl set_user_tags admin administrator

image.png

开放客户端链接端口

打开客户端链接端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

主要端口介绍

  • 4369 – erlang发现口
  • 5672 – client端通讯口
  • 15672 – 管理界面ui端口
  • 25672 – server间内部通讯口
相关文章
相关标签/搜索