随堂笔记
http://code.tarena.com.cn/CGBCode/cgb2108/
http://218.247.142.198/CGBCode/cgb2108/
tarenacode
code_2013
Gitee代码仓库
一、Spring Cloud Netflix
-
注册中心
- Nacos
- Eureka
-
配置中心
- Nacos
- Spring Cloud Config / BUS
-
远程调用、负载均衡
- Feign、Ribbon
-
系统容错、限流
- Sentinel
- Hystrix
-
API网关
- Spring Cloud Gateway
- Zuul
-
数据监控
- Sentinel
- Hystrix Dashboard+Turbine
- 链路跟踪监控:Sleuth+Zipkin
业务创建结构
-
父项目
-
commons
-
业务模块
- 新建 spring 模块
- pom.xml
- application.yml
- service
- controller
1.1 搭建Eureka注册中心服务
-
新建 spring 模块: sp05-eureka
-
修改 pom.xml,添加 eureka server
-
yml
- 禁用自我保护模式
- 主机名:eureka1
- 针对单台服务器,不向自己注册,不从自己拉取注册表
-
启动类注解:@EnableEurekaServer 触发eureka server的自动配置
1.2 Eureka的四条运行机制
-
注册
客户端一次次的反复连接注册中心进行注册,直到注册成功为止
-
拉取
客户端每30秒拉取一次注册表,刷新注册表
-
心跳
客户端每30秒发送一次心跳数据,如果服务器端连续三次收不到一个服务的心跳,会删除它的注册信息
-
自我保护模式
- 由于网络故障,15分钟内,85%服务器出现心跳异常,会自动进入自我保护模式
- 保护所有注册信息不删除
- 等待网络恢复后,可以退出保护模式,恢复正常
- 开发调试期间应该关闭保护模式,避免影响测试
1.3 Eureka客户端
-
修改 hosts 文件 win+r,输入 drivers,进入 etc 目录找到 hosts 文件
127.0.0.1 eureka1
127.0.0.1 eureka2
-
修改 2,3,4 三个模块,添加 eureka client 依赖
-
修改 2,3,4 的 yml 配置,添加 eureka 的连接地址 http://eureka1:port1/eureka
客户端启动多个服务器
通过 springboot 的启动参数 --server.port设置商品的启动端口
-
运行的下拉菜单中,选择 edit configuration
-
找到商品的启动配置
-
修改两个位置
-
启动配置名称: Sp02-item-8001、Sp02-item-8002
-
配置启动参数 program arguments:
- --server.port=8001
- --server.port=8002
-
Eureka高可用
-
添加 eureka1 和 eureka2 的 profile 配置
-
配置两个启动配置
- Sp05Eureka-2001,添加启动参数:--spring.profiles.active=eureka1
- Sp05Eureka-2001,添加启动参数:--spring.profiles.active=eureka2
- 修改 2,3,4,连接两台 eureka 服务器
1.5.1 调用过程
-
调用方添加 feign 依赖
-
启动类添加注解:@EnableFeignClients
-
添加两个远程调用接口,接口上添加注解@FeignClients
- ItemClient
- UserClient
-
OrderServiceImpl 中实现远程调用
1.5.2 Feign 集成 Ribbon
- 负载均衡 -- 默认启用了负载均衡
- 重试 -- 默认启用了重试
调用后台服务失败(异常、服务器崩溃、超时),可以自动发起重试调用
重试参数:
- ribbon.MaxAutoRetries - 单台服务器的重试次数,默认0
- ribbon.MaxAutoRetriesNextServer - 更换服务器的次数,默认1
- ribbon.ReadTimeout - 接收响应的超时时间,默认1000
- ribbon.ConnectTimeout - 与后台服务器建立连接等待超时时间,默认1000
- ribbon.OkToRetryonAllOperations - 是否对所有类型请求都进行重试,默认只对 GET 请求重试



