二丶Eureka使用和源码分析
1丶Eureka是什么
- Eureka是springCloud Netflix的核心子模块
- Eureka包含:服务端和客户端
- server提供服务注册服务,储存所有可用服务节点
- 用于简化与server通讯复杂度
2丶环境搭建
- 服务端依赖
- 服务端配置
- 服务端启动类
- 客户端依赖
- 客户端启动类
- 客户端配置
3丶集成eureka
- 调用
4丶核心特性
服务注册:
- eureka client在第一次心跳时间向eureka server注册
- 注册时会提供诸多自身元数据:主机名丶端口丶健康指标URL等
服务续约:
eureka client通过发送心跳进行续约
默认情况下每30面发送一次心跳
如果90秒内eureka server未收到续约,则进行服务剔除
由官方规定不建议调整
服务下线
- eureka client优雅退出是会发送cancel命令
- eureka server收到cancel命令时会删除该节点
获取注册列表信息
- eureka client会缓存由server获取的注册表信息
- eureka client会定期更新注册表信息[默认30秒]
- eureka client会处理注册表的合并等内容
5丶服务端集群搭建
- 服务1配置
- 服务2配置
6丶Eureka集群架构
- 架构图
7丶eureka自我保护机制
自我保护机制: 不删除心跳过期的服务
什么条件下eureka会启动自我保护?
自我保护的条件
一般情况下,微服务在eureka上注册后,会30秒发送一个心跳包,eureka通过心跳来判断服务是否健康,同事后定期删除超过90秒没有发送心跳的服务
有两种情况eureka server搜不到服务的心跳
- 微服务自身原因
- 微服务与eureka之间的通讯故障
那么这个阈值是多少
15分钟之内是否低于85%:
eurekaserver在运行期间,会统计心跳失败的比例在15分钟内是否低于85%,这种算法叫做eureka server的自我保护机制
什么时候关闭自我保护机制
- 每60秒进行一次扫描,恢复到85%后关闭自我保护机制
为什么要启动自我保护
- 因为同时保留"好数据"与"坏数据"总比丢掉任何数据更好,当网络故障恢复后,这个eureka节点会退出"自我保护模式"
- eureka还有客户端缓存功能(也就是微服务的缓存功能). 即便eureka集群中所有节点都宕机失效,微服务的Provider和consumer都能正常通信
- 微服务的负载均衡策略会自动剔除死亡的微服务节点
关闭自我保护机制
8丶如何优雅停服
- 服务端暴露端点依赖
- 服务端shutdown端点配置
- 请求执行shutdown端点
9丶如何加强eureka注册中心的安全性
- 引入安全认证依赖
- 安全认证配置
- 开启安全认证bean配置类
10丶eureka转化nacos
- 服务端更改依赖
- 服务端更改配置
11丶源码分析(服务注册丶续约丶集群同步)
- 架构图
- 源码分析图
12丶服务剔除丶下架丶服务保护
- 代码分析
13丶缓存机制
代码分析
14丶客户端源码分析
- 源码分析