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

常见注解


常见配置

核心功能
条件构造器


lamda


Service接口


批量新增

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

命令解读


数据卷
容器内修改文件不方便



自定义镜像


Dockerfile



容器网络互联


DockerComposee
项目一键部署

常用命令总结(面试)
docker ps:查看docker容器(运行之后查看是否运行成功),用于查看正在运行的容器。
docker images:于查看本地Docker服务器上的所有可用镜像。
docker logs -f 【容器名字】:查看运行日志
微服务
单体架构
高并发测试工具Jmeter

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

SpringCloud(商城相关模块)

拆分

改端口号
改数据库
调试文档的接口
导入相对应的代码controller、service、mapper、domain
远程调用
一个微服务(购物车)需要商品条目的数据,因为数据库不是同一个则可以通过远程调用进行数据传输


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

总结

Note:需要改进RestTemplate
存在的问题

注册中心原理


服务注册(nacos)
docker下载镜像


服务发现

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


连接池


最佳实践
方案1

方案2

依赖导入,之后重新导包
仍需要注入bean并且能扫描到:

日志


组件2-网关

入门

路由属性


网关请求处理流程

登录校验要在校验之前

如何自定义过滤器(GlobalFilter)


GateAwayFilter:一般都使用GlobalFilter就够了,有对应需求时再看
具体实现:登录校验



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

相关代码

步骤

配置其他配置类时,对MVC的配置类加载不需要在网关微服务模块。
需要加@ConditionalOnClass(DispatcherServlet.class)进行条件筛选
网关->过滤器(获取信息)->拦截器(提取信息)->服务
OpenFeign传递用户(用户间的微服务传递)




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


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

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

组件3-配置管理(Nacos)
存在的问题
重复配置过多

配置共享




配置热更新

动态路由


@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修饰会注入失败
微服务问题和原因
雪崩问题


解决方案
服务保护方案-请求限流

服务保护方案 - 线程隔离

服务保护方案-服务熔断

服务保护技术

结论

服务保护技术-Sentinel

使用步骤


其中的Endpoint就是Controller层的接口
为区分多个接口,需要额外配置来将:请求路径+请求方式

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


线程隔离


Fallback




服务熔断



分布式事务

RabbitMQ(异步通信组件)


同步调用

异步调用


broker:消息代理
MQ技术选型

RabbitMQ


注意事项

数据隔离
通过隔离不同用户,实现数据的隔离。
每个用户只能操作和访问自己虚拟主机的数据和消息。
java客户端(使用java实现MQ)
spring AMQP
### 步骤



接受消息(@RabbitListener)

总结

Work Queues模型



Fanout交换机



Direct交换机



Topic交换机



基于Bean声明队列交换机


基于注解声明队列交换机
解决基于Bean声明队列交换机绑定Key臃肿的问题。

消息转换器



基于MQ的业务改造

为了让springboot能扫描到相关配置类


消息可靠性
发送者可靠性
发送者重连

发送者确认

MQ可靠性

数据持久化

Lazy Queue




消费者可靠性
消费者确认机制


失败重试机制


业务幂等性




延迟消息(兜底方案)
#### 死信交换机

延迟消息插件



延迟消息–取消超时订单


170万+

被折叠的 条评论
为什么被折叠?



