- 搭建Eureka注册中心服务
- Eureka的四条运行机制
- 1.注册
- 2.拉取
- 3.心跳
- 4.自我保护
- Eureka客户端
- 1.修改hosts文件
- 2.修改2.3.4.三个模块,添加eureka client依赖
- 3.修改2.3.4.的yml配置,添加eureka的连续地址
- 商品和eureka的高可用
- Eureka高可用
- 订单远程调用商品和用户
- Feiggn继承Ribbn
- 负载均衡--默认启用负载均衡
- Ribbn重试
- ZuulAPI网关
- 统一的调用入口
- 1.新建spring模块: sp06-zuul
- 2.pom.xml添加依赖:zuul、 eureka、 client
- 3.yml配置路由规则
- 4.启动类添加注解:@EnableZuulproxy
- 统一的权限校验
- 1. 继承Zuul的过滤器,在过滤器中判断用户权限
- 2.添加商品访问的权限判断:
- 集成Ribbon
- 默认已经启动可ribbon的负载均衡
- 默认不启用ribbon的充实
- 启用重试
- 集成Hystrix
- 容错和限流工具
- Hystrix数据监控
- 搭建 Hystrix Dashboard
- Turbine
- Actuator
- 添加actuator
1.新建spring模块: sp05-eureka
2.修改pom.xml,添加eureka server
3.yml
禁用自我保护模式
主机名: eureka1
针对单台服务器,不向自己注册,不从自己拉取注册表
4.启动类注解:@EnableEurekaServer 触发eureka server 的自动配置
客户端一次次的反复连接注册中心进行注册,知道注册成功为止。
2.拉取客户端没30秒拉取一个注册表,刷新注册表。
3.心跳客户端每30秒向服务器发送一次心跳数据,如果服务器端连续三次收不到一个服务的心跳,会删除他的注册信息。
4.自我保护- 15分钟内,85%服务器出现心跳异常,会自动进入自我保护模式,
- 保护所有注册信息不删除,等待网络恢复以后,可以退出保护模式,恢复正常。
- 开发调试期间应该关闭保护模式,
win+r,输入drivers,进入etc目录找到hosts文件
127.0.0.1 eureka1
127.0.0.1 eureka2
3.修改2.3.4.的yml配置,添加eureka的连续地址org.springframework.cloud spring-cloud-starter-netflix-eureka-client
eureka:
client:
service-url:
#默认地点 可以从云服务商购买不同地点的注册中心服务器
# 自己搭建的注册中心只能使用defaultZone
defaultZone: http://eureka1:2001/eureka
商品和eureka的高可用
通过spring boot的自动参数 --server.port设置商品的启动端口
02商品高可用 启动两台服务器 8001 8002
命令行 : java -jar a.jar --server.port 8001
命令行 : java -jar a.jar --server.port 8002
idea
1.运行的下拉菜单中,选择edit configuration
2.找到商品的启动配置
3.修改两个位置
启动配置名称
配置启动参数
--server.port=8001 --server.port=8001Eureka高可用
配置05 server 增加yml文件
Application-eureka1.yml
eureka:
instance:
hostname: eureka1
client:
#针对单台服务器,不想自己注册,不从自己拉去注册表
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka2:2002/eureka
Application-eureka2.yml
eureka:
instance:
hostname: eureka2
client:
#针对单台服务器,不想自己注册,不从自己拉去注册表
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka1:2002/eureka
修改2.3.4连接两台eureka配置
订单远程调用商品和用户1.04项目添加feign依赖
2.启动类添加注解:#EnableFeginVlients
3.添加两个远程调用接口
ItemClient
UserClient
4.OrderServiceImpl中实现远程调用
调用后台服务失败(异常,服务器崩溃,超时),可以自动发起重试调用
重试参数:ribbon.MaxAutoRetries-单台服务器的重试次数
ribbon.MaxAutoRetriesNextServer-更换服务器次数
ribbon.ReadRimeout–接收响应超时时间,默认一秒1000
ribbon.ConnectTimeout–与后台服务器简历连接等待超时时间,默认1000
ribbon.OkToRetryOnAllOperations–是否对所有请求都进行重试,默认只对GET请求重试
总共请求次数(x+1)*(y+1)
-
http://localhost:3001/item-service/ytflkaa没有登录不允许访问
-
http://localhost:3001/item-service/ytflkaa?token已经登录可以访问
1.新建过滤器类:AccessFilter,继承ZullFilter
2.按照规则实现过滤器
3.提篮家注解:@component -
zuul的自动配置,会从speing容器自动发现过滤器实例,完成自动配置
- 在网关重试,可能造成后台服务大面积出现压力翻倍
- 重试功能应该尽量往后放
- 1.添加spring-retry依赖
- 2.yml配置启用重试:zuul.retryable=true
- zuul默认启用Hystrix
- 添加降级
- 1.添加降级类,实现FallBackProvider接口
- 2.添加@component
- zuul的制动配置会从spring容器自动发现降级类的实例,完成自动配置
- 1.容错–通过降级来容错
- 调用后台服务失败,执行当前模块的一段降级代码,返回降级结果
- 错误提示
- 缓存数据
- 根据具体业务逻辑,返回任何结果都可以
- 2.限流–通过熔断来限制后台服务的流量
- 流量过大时,后台服务出现大量错误,会自动触发熔断
- 10秒,20次请求
- 50%出错,执行了降级(必须首先满足)
- 半开状态
-
断路器打开后一段时间,会进入半开状态
-
会尝试发送一次客户端调用
-
调用成功,关闭断路器恢复正常链路
-
调用失败,继续保持打开状态
Hystrix利用springboot的Actuator工具暴露自己的监控数据
搭建 Hystrix Dashboard- 1.新建spring模块:sp07-hystrix-dashboard
- 2.配置pom.xml,添加hystrix dashboard
- 3.yml配置允许抓取服务器列表
- 4.启动类添加注解:@EnableHystrixDashbload
- 访问路径:http://localhost:4001hystrix
从多台服务器抓取Hystrix日志,进行聚合
Hystrix dashboard 从Turbine住区聚合后的日志数据
- 1.新建spring模块: sp08-turbine
- 2.pom.xml,添加turbine,eureka client
- 3.yml
-
聚合的服务列表:zuul.a,b,,c,d,
-
对聚合的日志数据命名:new String ("default"). - 4.启动类注解:@EnableTurbine
- 5.http://localhost:5001/turbine.stream
springboot提供的项目监控指标工具,提供了多种监控数据
- 健康状态
- 环境变量,配置参数
- spring mvc的映射路径
- JVM虚拟机堆内存镜像
- spring容器中所有的对象
1.添加actuator依赖
2.yml配置暴露的监控数据
- m.e.w.e.i="*" – 暴露所有监控数据
- m.e.w.e.i=health, env ,beans , mappings



