eureka运行机制
(1)注册:客户端会一次一次反复连接服务器,直到注册成功为止
(2)拉取:客户端每30秒重复拉取注册表,刷新注册表
(3)心跳:客户端每30秒发送一次心跳数据,服务器在连续3次收不到一个服务的心跳后,会删除这个服务
(4)自我保护模式:由于网络不稳定,或网络中断,15分钟内,85%服务器出现心跳异常,会进入保护模式,保护所有注册信息不删除
网络恢复之后,会自动退出保护模式恢复正常,开发调试期间,可以禁用保护模式,避免影响测试。
zuul网关
-
zuul API 网关,为微服务应用提供统一的对外访问接口。
-
zuul 还提供过滤器,对所有微服务提供统一的请求校验。
-
Zuul 的四个功能:统一的入口、统一的权限校验、集成ribbon、集成hystrix
-
统一的入口实践步骤:
(1)新建 module: sp06-zuul
(2)添加依赖: eureka client、zuul、sp01
(3)配置文件yml :
下面是默认配置
zuul根据注册表的注册信息,自动完成配置
最好手动配置,防止注册表不全
zuul:
routes:
item-service: /item-service/**
user-service: /user-service/**
order-service: /order-service/**
(4)启动类添加注解:@EnableZuulProxy
- 统一的权限校验 实践步骤:
(1)继承父ZuulFilter过滤器
(2)自定义过滤器的方法
(3)添加@Component注解
zuul会从spring容器中发现这个过滤器的实例,自动完成配置。
携带token时访问:
未携带token时访问:
- 集成ribbon 实践步骤:
zuul集成Ribbon默认实现负载均衡,但是没有启动Ribbon的重试。尽量不要在网关添加重试,否则可能会造成大面积服务器压力倍增。
(1)添加 spring-retry
依赖
(2)yml配置 zuul.retryable=true
(3)有默认重试参数,可以修改配置
- 集成Hystrix 实践步骤:
容错:当调用后台服务出错时,执行当前服务中的一段降级代码,返回降级结果。
限流(熔断):当调用后台服务流量过大时,后台服务出现故障,可以断开链路,减轻后台服务压力,等待后台服务恢复。
(1)降级操作:
调用后台服务出错:
后台服务出现异常,500错误。
后台服务不存在。
调用超时,默认1秒超时。
(2)添加降级代码
zuul集成了hystrix,有hystrix的间接依赖,不需要添加任何配置,默认已经启用hystrix。
实现 FallbackProvider 接口
添加 @Component 注解,会从spring容器自动发现这个实例,完成自动配置。
(3)Hystrix熔断、限流:
后台服务流量过大,出现故障,通过熔断限制后台服务流量。
熔断的条件:
-
10秒内有20次请求
-
50%失败,则执行降级代码
断路器打开一段时间后,会进入半开状态,半开状态下, -
Hystrix dashboard
Hystrix仪表盘,可以监控Hystrix降级和熔断的情况
搭建仪表盘:
1.创建:module:sp01-hystrix-dashboard
2.添加依赖:hystrix-dashboard -
Actuator
springboot提供的一个项目监控工具,提供项目的多种监控日志。
添加Actuator:
1.actuator依赖
2.yml配置暴露哪些监控数据
m.e.w.e.i="*" 暴露全部监控数据
m.e.w.e.i=health,beans,mappings,hystrix,stream 暴露多项监控数据
m.e.w.e.i=health 暴露一项数据
访问路径:http://localhost:3001/actuator
Turbine
Hystrix日志的聚合工具
可以聚合多台服务器的Hystrix日志,Hystrix dashboard可以从Turbine拉取聚合之后的日志,同时监控多台服务器。
搭建Turbine 服务
1.新建模块:Sp08-turbine
2.添加依赖:eureka client,turbine
3.yml
聚合的服务:zuul、aa、bb、cc
给聚合的数据命名:new String("default")
4.启动类:@EnableTurbine
5.访问http:localhost:5001/turbine.stream
VMware 修改NAT网络网段
编辑–虚拟网络编辑器–选择vmnet8网卡–左下角 192.168.64.0
Spring cloud config 配置中心
集中管理和维护配置文件
准备git仓库
1.在springcloud1工程目录下新建config文件夹
2.把sp02,03,04的application.yml复制到config文件夹下
改名为:
- item-service-dev.yml
- user-service-dev.yml
- order-service-dev.yml
3.创建本地仓库
- VCS——>create git repository——>spring cloud1
4.提交本地仓库
搭建配置中心
创建工程sp09-config
添加依赖:eureka client,config-server
配置yml:
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/chong-xin/GitCGBV2104Project
search-paths: springcloud1/config
server:
port: 6001
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
启动类添加注解:@EnableConfigServer
RabbitMQ
消息服务器
消息队列 message queue
消息中间件Borker
- 搭建Docker服务器
1、克隆centos-802105:docker-base
2、设置Ip
3、mobaxterm连接服务器
4、上传docker的离线安装文件到/root/
5、按docker安装笔记执行离线安装
# 进入 docker-install 文件夹
cd docker-install
# 为 docker-install 添加执行权限
chmod +x install.sh
# 安装
./install.sh -f docker-20.10.6.tgz
- 搭建Rabbitmq服务器
1、克隆docker-base
2、设置Ip
3、rabbitmq镜像:
docker pull rabbimq:management
在线下载镜像
上传rabbit-images.gz到/root中,执行docker load -i rabbit-image.gz
4、查看镜像docker images
查看镜像
5、关闭防火墙systemctl stop firewalld
;systemctl disable firewalld
6、重启docker系统服务systemctl restart docker
7、从镜像运行启动rabbitmq容器
# 导入的旧版本,启动运行命令
docker run -d --name rabbit \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq:management
# 在线拉取的新版本 3.9 以上
mkdir /etc/rabbitmq
vim /etc/rabbitmq/rabbitmq.conf
# 添加两行配置:
default_user = admin
default_pass = admin
docker run -d --name rabbit \
-p 5672:5672 \
-p 15672:15672 \
-v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf \
rabbitmq:management
8、访问管理控制台 http://192.168.64.140:15672
用户名密码是 admin
Bus消息总线
-
Bus连接rabbitmq,发送刷新指令
-
Bus连接rabbitmq,接收刷新指令
-
修改2,3,4,9,添加Bus消息总线
1.添加依赖:Bus、Rabbitmq、Binder-rabbitmq
2.yml配置rabbitmq的连接信息,修改2,3,4的config文件,提交推送。 -
修改9,暴露刷新端点
1.actuator 依赖 (09中已经有间接依赖)
2.yml暴露刷新端口
m.e.w.e.i=bus-refresh
Sleuth + Zipkin 链路跟踪
Sleuth 在各个模块产生链路跟踪日志
http://localhost:3001/order-service/sedede