学习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 未提交阻塞
 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更新 Node.js 和 npm 使用 nvm

更新 Node.js 和 npm 使用 nvm 问题: 当前 Node.js 版本为 16.20.2,不兼容所需的 npm 版本 10.2.4。需要的 npm 版本 10.2.4 要求 Node.js 版本至少为 18.17.0 或更高。 解决步骤: 查看可用的 Node.js 版本 使用 nvm list available 命令来查看所有可安装的 Node…

【C++ protobuf中对不同消息内容进行赋值的方式】

本文中用到的消息结构: message PointNameInfo {optional double longitude 1;// 经度坐标optional double latitude 2;// 纬度坐标optional uint64 timestamp_sec 3;// 时间戳optional uint32 scale 4;optional string name 5; }message PointInfo {optional…

C++之vector插入初始化性能优化

C整理集合C刷题基础知识(栈、队列、hash、STL、基础函数等)---持续更新-CSDN博客 vector的高级使用(优化) 1、元素插入(优化) 对于vector的元素插入存在两个函数push_back()以及emplace_back()&#xff…

记录 | CUDA编程中用constexpr替代__host____device__

比如用 __host__ & __device__ 的情况如下&#xff1a; #include <cstdio> #include <cuda_runtime.h>__host__ __device__ void say_hello(){printf("Hello, world!\n"); }__global__ void kernel(){say_hello(); }int main(){kernel<<<1…

使用rust slint开发桌面应用

安装QT5&#xff0c;过程省略 安装rust&#xff0c;过程省略 创建工程 cargo new slint_demo 在cargo.toml添加依赖 [dependencies] slint "1.1.1" [build-dependencies] slint-build "1.1.1" 创建build.rs fn main() {slint_build::compile(&quo…

8.HTTP工作原理

HTTP是什么 HTTP工作原理 HTTP协议的请求类型和响应状态码 总结 1.HTTP是什么 HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则 2.HTTP工作原理 HTTP超文本传输协议的本质是TCP通信&#xff0c;链接—>请求—>响应—>断开 3.HTTP协议的请求类型和响应状…

qt/c/c++文件操作总结

1. 读取文件 1.1 Qt以二进制方式读取大文件返回char* 在Qt中以二进制模式读取一个大文件(以500MB为例)并将其内容存储到char*数组中,需要谨慎处理内存分配。以下是实现这一功能的步骤和示例代码: 1. 打开文件 使用QFile类以二进制模式打开文件。 2. 检查文件大小 使用…

Java+Swing+Mysql实现超市管理系统

一、系统介绍 1.开发环境 操作系统&#xff1a;Win10 开发工具 &#xff1a;IDEA2018 JDK版本&#xff1a;jdk1.8 数据库&#xff1a;Mysql8.0 2.技术选型 JavaSwingMysql 3.功能模块 4.系统功能 1.系统登录登出 管理员可以登录、退出系统 2.商品信息管理 管理员可以对商品信息…

Android画布Canvas绘制drawBitmap基于源Rect和目的Rect,Kotlin

Android画布Canvas绘制drawBitmap基于源Rect和目的Rect&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns…

Cannot find module ‘node:url‘报错处理

在运行vite搭建的项目时&#xff0c;遇到Cannot find module node:url’报错。具体错误如图所示&#xff1a; 造成以上问题的原因是node版本较低。Vite 需要 Node.js 版本 14.18&#xff0c;16。 解决方案&#xff1a; 上面是通过nvm切换高版本node。 再次执行运行命令&…

基于Springboot的社区医院管理服务系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的社区医院管理服务系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

如何保障Redis的安全性?

身份验证和访问控制&#xff1a; 认证密码&#xff08;requirepass&#xff09;&#xff1a; 在Redis配置文件中设置 requirepass 参数&#xff0c;要求客户端连接时提供密码。确保密码的复杂度&#xff0c;定期更新密码&#xff0c;以防泄漏。网络绑定&#xff08;bind&#x…

QLineEdit 的 InputMask掩码

QLineEdit 的 InputMask掩码 A&#xff1a;只能输入字母&#xff0c;且不可省略 a&#xff1a;只能输入字母&#xff0c;可以省略 N&#xff1a;只能输入 字母和数字&#xff0c;且不可省略 n&#xff1a;只能输入 字母和数字&#xff0c;可以省略 X&#xff1a;可以输入任意字…

如何写好一篇硬件经验总结文档

大家好,这里是大话硬件。 今天这篇文章想分享一个工作方法,主要用在如何写好一篇硬件问题总结文档上。 我们在工作中不可避免会碰到一些复杂的硬件问题,这些问题可能出现在项目研发过程中,也可能来自客户的反馈。 当困扰大家很久的棘手问题被解决完后,如果被总结成一篇…

C语言--每日选择题--Day36

第一题 1. 以下关于指针的说法,正确的是() A&#xff1a;int *const p 与 int const *p等价 B&#xff1a;const int *p 与 int *const p等价 C&#xff1a;const int *p 与 int const *p 等价 D&#xff1a;int *p[10] 与 int (*p)[10] 等价 答案及解析 C const 在*的左侧&…

代码随想录 509. 斐波那契数

题目 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n > 1 给定…

后端架构的一些知识

目录 一.抖音 二.大型网站是如何管理海量的数据的 三.大型网站停机一天会造成多大损失 四.如何设计一套安全&#xff0c;健壮&#xff0c;可扩展&#xff0c;稳定性强的后端系统 五.如何在不影响原来代码的基础上进行功能更新 六.大型网站一年都不停机吗 七.线上业务出现…

缓存穿透、击穿、雪崩

缓存穿透&#xff1a; 指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上&#xff0c;导致系统瘫痪。 解决方案&#xff1a; 通常包括使用布隆过滤器或者黑白名单等方式来过滤掉无效请求&#xff0c;以及在应用程序中加入缓存预热…

leetcode5 最长公共前缀三种python解法

14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示…

SpringSecurity6 | 默认用户生成

SpringSecurity6 | 默认用户生成 ✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java…