SpringCloudAlibaba

nacos

注册中心,配置中心,服务管理
SpringCloudAlibaba_第1张图片

服务心跳

在服务注册后Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5秒发送一次心跳

服务注册发现

Nacos Discovery Starter
实时从服务列表拉取最新服务

服务健康检查

Nacos Server会开启一个定时任务用来检测注册服务实例健康情况,超过15s没收到客户端心跳就会将healthy置为false,超过30s就会剔除

一致性协议CAP

Nacos支持CP+AP
C:一致性
A:可用性
P:分区容错性

Nacos管理界面

雪崩保护
SpringCloudAlibaba_第2张图片
ephemeral设置为false时,当服务宕机时也不会剔除,在界面有保护阈值,当健康实例与总实例比值小于阈值就出将宕机的服务提供服务,防止洪峰流量到来导致服务雪崩【服务都不能用】

Ribbon负载均衡

nacos-discovery引入后就自动加了ribbon的依赖
更改负载均衡策略的方式

  • 配置好Bean的方式覆盖掉已有的负载均衡策略,方法名一定是iRule SpringCloudAlibaba_第3张图片
  • 也可以在配置文件上给某一个 服务设置负载均衡策略SpringCloudAlibaba_第4张图片

Feign

  1. 添加依赖,加依赖前要确定有没有SpringCloud版本依赖有没有引入

SpringCloudAlibaba_第5张图片

  1. 写要调用请求所在的Controller对应fegin的接口【与controller是意义对应的】
    SpringCloudAlibaba_第6张图片
  2. 直接调用,注入fegin的接口,在启动类上加@EnableFeginClient注解SpringCloudAlibaba_第7张图片

openfegin日志配置

SpringCloudAlibaba_第8张图片
fegin的日志级别为debug ,springboot的日志级别为info,所以设置时就要将日志级别改为debug
全局应用,直接在日志配置类上加@Configuration
局部应用则将日志配置类上的@Configuration去掉,在需要出日志的fegin接口上加 SpringCloudAlibaba_第9张图片
另外一种局部日志配置在配置文件实现SpringCloudAlibaba_第10张图片

fegin契约配置

在这里插入图片描述
简而言之:升级系统用openfegin后,不能影响以前fegin的使用,来保证系统正常运行SpringCloudAlibaba_第11张图片

超时时间配置

配置类
SpringCloudAlibaba_第12张图片
配置文件
SpringCloudAlibaba_第13张图片

自定义拦截器

消费端调用服务提供方的时候起的作用
作用:

  1. 调用的时候记录日志【记录自己的日志】
  2. 访问的时候可以带一些参数【做一些认证授权】
    SpringCloudAlibaba_第14张图片

Nacos-config

Controller层上加@RefreshScope注解,改了配置信息就能随时感知

sentinel服务熔断

解决可用性问题,实现高可用
服务挂掉问题:
硬件问题:内存不够、磁盘空间不足
OOM问题
第三方服务挂了,请求第三方没有得到相应,导致线程池爆满,从而打垮服务器
总结:激增流量
其他服务拖垮
异常没有处理【代码中断、内存没及时释放】
负载不均【高估服务器】
线程池满了

sentinel—服务雪崩

服务雪崩:一个服务挂掉后,在并发高的情况下不断的进行访问,流量激增,导致其他服务也垮掉
SpringCloudAlibaba_第15张图片

sentinel—容错机制

稳定性、恢复性
超时机制,返回降级方案。但是当限制时间内,流量很大依旧有可能挤爆服务,所以
服务限流
隔离:用户的请求将不会直接访问服务,而是通过线程池中的空闲线程来访问服务。如果线程池已满,则进行降级处理
信号隔离
服务熔断

sentinel—介绍

分布式系统的流量防卫兵
在这里插入图片描述

流控规则体验

  1. 导入sentinel核心库
  2. 导入web场景启动器
  3. 在接口中定义资源
  4. 为资源进行规则设置【流控规则】SpringCloudAlibaba_第16张图片SpringCloudAlibaba_第17张图片

sentinel—@SentinelResource

基于上面的代码侵入性太强的缘故【耦合在接口当中】
改善措施:—@SentinelResource
改善接口中的资源定义、被流控降级的方法

使用步骤:

  1. 添加依赖【可以看出是通过切面实现的】SpringCloudAlibaba_第18张图片 2. 配置Bean【在启动类上配置】在这里插入图片描述
  2. 定义资源在这里插入图片描述在这里插入图片描述
  3. 流控降级的方法SpringCloudAlibaba_第19张图片SpringCloudAlibaba_第20张图片

Seata

SpringCloudAlibaba_第21张图片

什么是Seata

seata是一款开源的分布式事务解决方案,致力于提高性能和简易用的分布式服务
提供了:AT 、TCC 、SAGA 、XA事务模式
首推AT
SpringCloudAlibaba_第22张图片
二阶段提交协议:Prepare、Commit在这里插入图片描述SpringCloudAlibaba_第23张图片
SpringCloudAlibaba_第24张图片

Seata—分布式解决方案:AT模式

SpringCloudAlibaba_第25张图片
SpringCloudAlibaba_第26张图片
SpringCloudAlibaba_第27张图片SpringCloudAlibaba_第28张图片

TCC

SpringCloudAlibaba_第29张图片

Seata复盘

SpringCloudAlibaba_第30张图片SpringCloudAlibaba_第31张图片

gateway—网关介绍

在这里插入图片描述

使用

创建shpringcloud模块

  1. 引入依赖
    SpringCloudAlibaba_第32张图片
  2. 编写配置文件
    SpringCloudAlibaba_第33张图片
    SpringCloudAlibaba_第34张图片

整合到nacos

  1. 添加依赖
    SpringCloudAlibaba_第35张图片
  2. 配置nacos
    SpringCloudAlibaba_第36张图片
    SpringCloudAlibaba_第37张图片

断言

在这里插入图片描述
在这里插入图片描述
SpringCloudAlibaba_第38张图片

自定义断言工厂

SpringCloudAlibaba_第39张图片

SkyWalking链路追踪

在这里插入图片描述

你可能感兴趣的:(SpringCloud,java)