学习SpringCloud

JWT

JWT(JSON Web Token)是一种用于在网络应用间传递信息的安全标准。JwtTool生产成
三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
工作流程如下:
1. 用户提供身份验证凭证(例如用户名和密码)进行身份验证。
2. 服务器验证用户凭证的有效性,并生成一个 JWT。
3. 服务器将 JWT 返回给客户端。
4. 客户端将 JWT 存储在本地(通常是在浏览器的本地存储或 Cookie 中)。
5. 客户端在后续的请求中将 JWT 作为身份验证凭证传递给服务器。(拦截器
6. 服务器验证 JWT 的签名和有效期,并根据其中的信息进行授权和身份验证。
 

注册中心


注册中心 eureka ,Nacos(服务治理,)
心跳 ,续约,推送改变,注册-发现,健康监控
eureka集群部署


Nacos
服务分级存储模型-
集群概念  服务-集群-实例
还支持配置管理、动态路由、流量管理和服务熔断等
负载均衡:集群优选轮询,权重(0-1)
环境隔离:就是新建分组 sit或uat


eureka和Nacos区别


CAP理论,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),
*心跳Nacos有临时实例(自己发给注册中心,不健康会剔除) 和非临时实例(注册中心主动发,不健康改状态)更新及时
*消费者推送:e只是pull  N有pull和push
*eureka(AP)和Nacos(CP)
*Nacos配置管理

Nacos统一配置管理(配置热更新)
*类似Spring Cloud Config
*正常流程 项目启动---读取本地.yml文件 --创建spring容器--加载bean
*流程 项目启动----(bootstrap.yml)--(读取nacos配置)---读取本地.yml文件 --创建spring容器--加载bean
*bootstrap.yml 引导文件 优先级高于 application.yml
步骤1 在Nacos添加配置,服务添加bootstrap.yml配置
步骤2 服务 配置自动刷新
2.1在@Value注入的变量所在类添加@RefreshScope
2.2使用@ConfigurationProperties(自动注入配置文件的值)

 


 

负载均衡  Ribbon(配置文件配置)


1. Round Robin(轮询)默认:按照顺序依次将请求分发给不同的服务实例。
2. Random(随机):随机选择一个服务实例来处理请求。
3. Weighted Round Robin(加权轮询):根据服务实例的权重,按照一定顺序将请求分发给不同的服务实例。
4. Weighted Random(加权随机):根据服务实例的权重,随机选择一个服务实例来处理请求。 5. Availability Filter(可用性过滤):排除掉故障或不可用的服务实例,然后再根据其他策略进行负载均衡。
6. Response Time(响应时间):根据服务实例的平均响应时间,选择响应时间最短的服务实例来处理请求。
7. Best Available(最佳可用):选择状态为"UP"(可用)的服务实例中,响应时间最短的服务实例来处理请求。
8. Zone Avoidance(区域避免):避免将请求发送到与调用方处于同一区域的服务实例,以提高系统的可用性和稳定性。
懒加载: 第一次使用的时候加载   第一次请求会比较慢
饥饿加载:启动就加载
 

远程调用
restTemplate


feign-声明式客户端-远程调用


替代restTemplate
集成了负载均衡 ribbon(默认)
集成hystrix

自定义配置
*日志级别(feign.logger.level):4种(没有 (默认),基础,请求头,全部) 配置全局或者某个
常用(最好选择 没有 ,基础)提高性能
*失败重试(feign.Retryer):请求失败重试,默认没有,不过ribbon是重试的 就是默认有
响应结果解析:例如将json转java对象
支持的注解格式:默认springMVC的注解

feign性能优化
*底层使用 URLConnection  不支持连接池   (默认的)
httpClient  支持连接池 
OKhttp  支持连接池 
 优化1:使用httpClient或者OKhttp去替代  配置开启连接池
优化2:日志 最好选择 没有 ,基础提高性能

feign最佳是实现
继承:controller和feignClient继承相同接口    缺点耦合度高
抽取:将feign抽取出独立模块    缺点:很大用不到的代码也必须一起加进来

Gateway统一网关


作用
*身份证验证
*服务路由和负载均衡
*请求限流
选择
*Gateway 响应式(更好)
*Zuul  阻塞的

搭建(3服务)
创建服务
配置路由(id /地址/ 断言(**/usr)  过滤器(处理请求或者响应))

断言工厂
path(默认)
哪个时间之前  ,之后 , 之间,
请求cookie, head 包含什么 
指定host  ,请求方式,  指定参数  
ip范围 权重

GatewayFilter过滤器(过滤器链)
过滤器工厂
添加移除 请求头,添加异常响应头 , 限制流量
GlobalFilte全局过滤器可以自定义过滤逻辑(登陆模块)

网关-跨网问题处理(域名或端口不一样,浏览器禁止)
CORS(浏览器询问-服务器)



雪崩
hystrix
sentinel图像化

 


分布式事务

seata框架
 

TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

AT模式  保存补偿操作
XA 未提交阻塞
 

spring boot的自动配置原理

Spring Boot 的自动配置原理是通过 @EnableAutoConfiguration 注解来实现的。
 @EnableAutoConfiguration 注解会扫描当前项目的依赖,并根据依赖的 jar 包中的 META-INF/spring.factories 文件中的配置,自动配置 Spring 容器。
 META-INF/spring.factories 文件中包含了 Spring Boot 自动配置的各种配置类,这些配置类会根据当前项目的依赖,自动配置 Spring 容器。
 例如,如果当前项目依赖了 Spring Boot 的 web 模块,那么 Spring Boot 就会自动配置 Spring MVC 和 Tomcat。
 另外,Spring Boot 还提供了 @ConfigurationProperties 注解,可以用来在配置文件中配置 Spring 容器的属性。
 @ConfigurationProperties 注解会扫描当前项目的配置文件,并根据配置文件中的配置,自动配置 Spring 容器。
 例如,如果当前项目的配置文件中配置了 spring.datasource.url 属性,那么 Spring Boot 就会自动配置数据源。
 总之,Spring Boot 的自动配置原理是通过 @EnableAutoConfiguration 注解和 @ConfigurationProperties 注解来实现的。
 通过这些注解,Spring Boot 可以自动配置 Spring 容器,从而简化了 Spring 的开发。

SpringBoot 自动配置就是基于SpringFactories 机制获取对应依赖META-INF目录下的 spring.factories 文件中的需要自动配置的类的全限定名信息,然后根据这些信息将我们需要的使用的 Bean 对象放到 IOC 容器中,当我们需要使用时,通过依赖注入机制直接注入使用即可

SpringFactories 机制

是 Spring 框架提供的一种扩展机制,用于在应用程序启动时自动加载并配置一些扩展类。具体来说,该机制通过在类路径下的 META-INF/spring.factories 文件中定义一些扩展类的全限定类名,然后在应用程序启动时自动扫描该文件,并加载其中的扩展类。
SpringFactories 机制的实现过程如下:

1,在类路径下的 META-INF/spring.factories 文件中定义一些扩展类的全限定类名。

2,在应用程序启动时,使用 ClassLoader 加载 META-INF/spring.factories 文件,并解析其中定义的扩展类名。

3,根据扩展类名使用反射机制动态创建扩展类的实例,并将其注册到相应的容器中。例如,在 Spring Boot 应用程序中,自动配置类会被注册到 Spring 容器中,并在应用程序启动时自动配置。

SpringFactories 机制的优点是可以极大地降低应用程序的配置难度,提高开发效率。在 Spring Boot 应用程序中,该机制被广泛应用于自动配置、自定义 Starter、插件等领域。
 

为什么spring boot的jar可以直接运行

springboot 提高一个插件spring-boot-maven-plugin用于把程序打包成为一个可运行的jar包

Spring Boot 是一个基于 Spring 框架的微服务开发框架,它提供了自动化配置的功能,使得开发者可以更快速地搭建 Spring 应用。Spring Boot 的 jar 可以直接运行的原因如下:

  1. 内嵌式容器

Spring Boot 内置了一个容器,可以用来管理 Spring 组件。这个容器可以自动扫描项目中的依赖,并将其添加到容器中。同时,它还可以自动配置类、实现依赖注入等。

  1. 嵌入式 Web 服务器

Spring Boot 还内置了一个嵌入式的 Web 服务器,如 Tomcat、Jetty 等。这样,开发者可以在不编写任何 Web 应用程序代码的情况下,快速搭建一个 Web 应用程序。

  1. 自动配置

Spring Boot 提供了自动配置的功能,可以自动配置 Spring 组件,如数据源、消息队列、缓存等。开发者不需要手动编写配置代码,可以大大提高开发效率。

  1. 快速开发

Spring Boot 提供了快速开发的功能,如嵌入式 Web 应用程序、starter 依赖等。这些功能可以帮助开发者快速开发应用程序,并在短时间内完成开发任务。

总的来说,Spring Boot 的 jar 可以直接运行的原因是它提供了内嵌式容器、嵌入式 Web 服务器、自动配置和快速开发等功能,使得开发者可以快速搭建 Spring 应用,并提高开发效率。

这么spring boot优化启动速度

*配置懒加载,
​​​​​​​*

Spring Boot 解决跨域问题可以通过以下几种方式:

1,使用 CORS 过滤器

Spring Boot 读取配置文件

@Value,
@Configuration 获取多个
@Environment  
​​​​​​​        如果配置文件中的属性与 Java 实体类中的属性不同名,可以使用 @Environment 注解获取配置文件中的属
@PropertySource 获取外部配置

SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?


启动类上面的注解是@SpringBootApplication,它也是SpringBoot的核心注解 主要组合包含了以下 3 个注解:

@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

@EnableAutoConfiguration:打开自动配置的功能, 也可以关闭某个自动配置的选项,比如关闭数据源自动配置功能:

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring组件扫描。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值