nacos
注册中心,配置中心,服务管理
服务心跳
在服务注册后Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5秒发送一次心跳
服务注册发现
Nacos Discovery Starter
实时从服务列表拉取最新服务
服务健康检查
Nacos Server会开启一个定时任务用来检测注册服务实例健康情况,超过15s没收到客户端心跳就会将healthy置为false,超过30s就会剔除
一致性协议CAP
Nacos支持CP+AP
C:一致性
A:可用性
P:分区容错性
Nacos管理界面
雪崩保护
ephemeral设置为false时,当服务宕机时也不会剔除,在界面有保护阈值,当健康实例与总实例比值小于阈值就出将宕机的服务提供服务,防止洪峰流量到来导致服务雪崩【服务都不能用】
Ribbon负载均衡
nacos-discovery引入后就自动加了ribbon的依赖
更改负载均衡策略的方式
- 配置好Bean的方式覆盖掉已有的负载均衡策略,方法名一定是iRule
- 也可以在配置文件上给某一个 服务设置负载均衡策略
Feign
- 添加依赖,加依赖前要确定有没有SpringCloud版本依赖有没有引入
- 写要调用请求所在的Controller对应fegin的接口【与controller是意义对应的】
- 直接调用,注入fegin的接口,在启动类上加@EnableFeginClient注解
openfegin日志配置
fegin的日志级别为debug ,springboot的日志级别为info,所以设置时就要将日志级别改为debug
全局应用,直接在日志配置类上加@Configuration
局部应用则将日志配置类上的@Configuration去掉,在需要出日志的fegin接口上加
另外一种局部日志配置在配置文件实现
fegin契约配置
简而言之:升级系统用openfegin后,不能影响以前fegin的使用,来保证系统正常运行
超时时间配置
配置类
配置文件
自定义拦截器
消费端调用服务提供方的时候起的作用
作用:
- 调用的时候记录日志【记录自己的日志】
- 访问的时候可以带一些参数【做一些认证授权】
Nacos-config
Controller层上加@RefreshScope注解,改了配置信息就能随时感知
sentinel服务熔断
解决可用性问题,实现高可用
服务挂掉问题:
硬件问题:内存不够、磁盘空间不足
OOM问题
第三方服务挂了,请求第三方没有得到相应,导致线程池爆满,从而打垮服务器
总结:激增流量
其他服务拖垮
异常没有处理【代码中断、内存没及时释放】
负载不均【高估服务器】
线程池满了
sentinel—服务雪崩
服务雪崩:一个服务挂掉后,在并发高的情况下不断的进行访问,流量激增,导致其他服务也垮掉
sentinel—容错机制
稳定性、恢复性
超时机制,返回降级方案。但是当限制时间内,流量很大依旧有可能挤爆服务,所以
服务限流
隔离:用户的请求将不会直接访问服务,而是通过线程池中的空闲线程来访问服务。如果线程池已满,则进行降级处理
信号隔离
服务熔断
sentinel—介绍
分布式系统的流量防卫兵
流控规则体验
- 导入sentinel核心库
- 导入web场景启动器
- 在接口中定义资源
- 为资源进行规则设置【流控规则】
sentinel—@SentinelResource
基于上面的代码侵入性太强的缘故【耦合在接口当中】
改善措施:—@SentinelResource
改善接口中的资源定义、被流控降级的方法
使用步骤:
- 添加依赖【可以看出是通过切面实现的】 2. 配置Bean【在启动类上配置】
- 定义资源
- 流控降级的方法
Seata
什么是Seata
seata是一款开源的分布式事务解决方案,致力于提高性能和简易用的分布式服务
提供了:AT 、TCC 、SAGA 、XA事务模式
首推AT
二阶段提交协议:Prepare、Commit
Seata—分布式解决方案:AT模式
TCC
Seata复盘
gateway—网关介绍
使用
创建shpringcloud模块
- 引入依赖
- 编写配置文件
整合到nacos
- 添加依赖
- 配置nacos
断言