微服务相关组件学习笔记

介绍

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。

Mybatis-plus

image-20240628193027525

常见注解

image-20240628220746303

image-20240628221335991

常见配置

image-20240628222302893

核心功能

条件构造器

image-20240628230418368

image-20240628230438532

lamda

image-20240628230606799

image-20240628230632897

Service接口

image-20240703215915939

image-20240703225223158

批量新增

image-20240705153600643

Docker

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

image-20240708204025035

命令解读

image-20240708211957733

image-20240708212628927

数据卷

容器内修改文件不方便

image-20240709221357362

image-20240709222932447

image-20240710092429183

自定义镜像

image-20240710175330358

image-20240710181412464

Dockerfile

image-20240710184930500

image-20240710185141915

image-20240710185317360

容器网络互联

image-20240710192240085

image-20240710192300277

DockerComposee

项目一键部署

image-20240710221320430

常用命令总结(面试)

docker ps:查看docker容器(运行之后查看是否运行成功),用于查看正在运行的容器。
docker images:于查看本地Docker服务器上的所有可用镜像。
docker logs -f 【容器名字】:查看运行日志

微服务

单体架构

高并发测试工具Jmeter

image-20240711205045481

微服务架构

代价:各个服务的关系复杂化

image-20240711205758375

SpringCloud(商城相关模块)

image-20240711210521286

拆分

image-20240711213758268

改端口号
改数据库
调试文档的接口
导入相对应的代码controller、service、mapper、domain

远程调用

一个微服务(购物车)需要商品条目的数据,因为数据库不是同一个则可以通过远程调用进行数据传输

image-20240712140010943

image-20240712140730472

@RequiredArgsConstructor注解作用

与@AllargsConstruct不同,@RequiredArgsConstructor注解只会对final声明的成员函数进行构造.

image-20240712140344369

总结

image-20240712140926451

Note:需要改进RestTemplate

存在的问题

image-20240712141134690

注册中心原理

image-20240712141953320

image-20240712142101435

服务注册(nacos)

docker下载镜像

image-20240712142824054

image-20240712143503172

服务发现

image-20240712145548931

OpenFeign(简化http请求)-组件1

image-20240712152210710

image-20240712153311873

连接池

image-20240713202131375

image-20240713202139729

最佳实践

方案1

image-20240713203724697

方案2

image-20240713204136636

依赖导入,之后重新导包

仍需要注入bean并且能扫描到:

image-20240713204307798

日志

image-20240713204753848

image-20240713205102853

组件2-网关

image-20240713210359867

入门

image-20240713211512464

路由属性

image-20240718181204371

image-20240718181217759

网关请求处理流程

image-20240718215626279

登录校验要在校验之前

image-20240718215958746

如何自定义过滤器(GlobalFilter)

image-20240718222003857

image-20240718222031513

GateAwayFilter:一般都使用GlobalFilter就够了,有对应需求时再看

具体实现:登录校验

image-20240719172117121

image-20240719172203096

image-20240719172212261

网关传递微服务(解决上述传递用户部分)

image-20240719172705555

相关代码

image-20240719173230389

步骤

image-20240719173429011

配置其他配置类时,对MVC的配置类加载不需要在网关微服务模块。

需要加@ConditionalOnClass(DispatcherServlet.class)进行条件筛选

网关->过滤器(获取信息)->拦截器(提取信息)->服务

OpenFeign传递用户(用户间的微服务传递)

image-20240721150014631
在这里插入图片描述

在这里插入图片描述

image-20240721151318885

交易的微服务要想实现这个须在启动类上加上这个类

image-20240721151408951

image-20240721151449346

实现微服务间传递用户信息:

image-20240721151626580

总回顾(微服务登录解决 方案 )

image-20240721151825378

组件3-配置管理(Nacos)

存在的问题

重复配置过多

image-20240713214436252

配置共享

image-20240713214943009

image-20240713215141117

image-20240713215150788

image-20240713215204717

配置热更新

image-20240730105620151

动态路由

image-20240801180314221

image-20240801182358563

@PostConstruct

在bean初始化之后执行

@RequiredArgsConstructor和@Autowired

@RequiredArgsConstructor是Lombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解注意点。

注:

1、声明的变量必须加上final修饰

2、基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入

@AllArgsConstructor和@RequiredArgsConstructor都可以用来替代@Autowired写法,区别在于@RequiredArgsConstructor必须要有final修饰,如果有@Value注解,@RequiredArgsConstructor修饰可以成功注入,@AllArgsConstructor修饰会注入失败

微服务问题和原因

雪崩问题

image-20240801183832396

image-20240803222501989

解决方案

服务保护方案-请求限流

image-20240803222633147

服务保护方案 - 线程隔离

image-20240803222916393

服务保护方案-服务熔断

image-20240803230207394

服务保护技术

image-20240803230418529

结论

image-20240803230253632

服务保护技术-Sentinel

image-20240803230657947

使用步骤

image-20240803231034602

image-20240803231239017

其中的Endpoint就是Controller层的接口

为区分多个接口,需要额外配置来将:请求路径+请求方式

image-20240803231618907

请求限流(使用Jmeter进行多线程并发访问测试)

image-20240804163121056

image-20240804163508987

线程隔离

image-20240808162308716

image-20240808162334337

Fallback

image-20240808164248169

image-20240808164329070

image-20240808163226793

image-20240808163342128

服务熔断

image-20240808164401040

image-20240808164734858

image-20240808164907908

分布式事务

image-20240808165540769

RabbitMQ(异步通信组件)

image-20240713222723151

image-20240713222825248

同步调用

image-20240713223533492

异步调用

image-20240713224254182

image-20240713224306170

broker:消息代理

MQ技术选型

image-20240713225008284

RabbitMQ

在这里插入图片描述

image-20240713230007101

注意事项

image-20240713230956429

数据隔离

通过隔离不同用户,实现数据的隔离。

每个用户只能操作和访问自己虚拟主机的数据和消息。

java客户端(使用java实现MQ)

spring AMQP

在这里插入图片描述### 步骤
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

接受消息(@RabbitListener)

在这里插入图片描述

总结

在这里插入图片描述

Work Queues模型

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Fanout交换机

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

Direct交换机

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Topic交换机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于Bean声明队列交换机

在这里插入图片描述
在这里插入图片描述

基于注解声明队列交换机

解决基于Bean声明队列交换机绑定Key臃肿的问题。
在这里插入图片描述

消息转换器

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

基于MQ的业务改造

为了让springboot能扫描到相关配置类
在这里插入图片描述

在这里插入图片描述

消息可靠性

发送者可靠性

发送者重连

在这里插入图片描述

发送者确认

在这里插入图片描述

MQ可靠性

在这里插入图片描述

数据持久化

在这里插入图片描述

Lazy Queue

a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消费者可靠性

消费者确认机制

在这里插入图片描述在这里插入图片描述

失败重试机制

在这里插入图片描述在这里插入图片描述

业务幂等性

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

延迟消息(兜底方案)

在这里插入图片描述#### 死信交换机

在这里插入图片描述

延迟消息插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

延迟消息–取消超时订单

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值