一.MyBatis—Plus
一.快速入门
MybatisPlus介绍:MybatisPlus是一个基于Mybatis的增强工具库,旨在简化开发、提升效率,同时保留Mybatis的灵活性。它在Mybatis的基础上只做增强不做改变,引入它不会对现有工程产生影响
官网:简介 | MyBatis-Plus
使用MybatisPlus的基本步骤:
1.引入MybatisPlus依赖,代替Mybatis依赖
2.定义Mapper接口并继承BaseMapper
常见注解:
基本原理:mp通过扫描实体类,并基于反射获取实体类信息作为数据库表信息
@TableName:用来指定表名
@Tableld:用来指定表中的主键字段信息
@TableField:用来指定表中的普通字段信息
小结
常见配置
二.核心功能
条件构造器
QueryWrapper
UpdateWapper
AbstractLambdaWrapper
小结
自定义SQL
我们可以利用mp的Wrapper来构建复杂的where条件,然后字节定义sql语句的剩下部分
Service接口
三.插件功能
常用插件
分页插件
使用
二.Docker
一.Docker入门
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。
docker官网:https://www.docker.com
docker中文库:https://www.docker.org.cn/
docker架构图:
docker元素
二.Docker实战
1.搜索镜像
docker search nginx
2.下载镜像
docker pull nginx
3.查看镜像
docker images
4.启动容器
docker run -d --name nginx -p 8080:80 nginx
5.查看容器
docker ps
6.测试访问
127.0.0.1:8080
三.微服务架构
一.微服务介绍
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署
微服务架构:是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立的项目
SpringCloud
官网地址:Spring Cloud
二.熟悉黑马商城
黑马商城:
用户模块 商品模块 购物出模块 订单模块 支付模块
登录
三.服务拆分原则
什么时候拆分?
创业型项目:先采用单体架构,快速开发,快速试错。随着规模扩大,逐渐拆分
确定的大型项目:资金充足,目标明确,可以直接选择微服务架构,避免后续拆分的麻烦
怎么拆分?
高内聚:每个微服务的职责要尽量单一,包含的业务相互关联度高,完整度高
低耦合:每个微服务的功能要相对独立,尽量减少对其他微服务的依赖
拆分方式:
横向拆分:抽取公共服务。提高复用性
纵向拆分:按照业务模块来拆分
四.Nacos服务调用
Nacos注册中心
服务注册
服务发现
调用服务
五.OpenFeign
快速入门
连接池
最佳实践
日志
小结
六.网关
网关:就是网络的关口,负责请求的路由,转发,身份校验
实现
快速入门
1.创建新模块
2.引入网关依赖
3.编写启动类
4.配置路由规则
路由属性
网关路由对应的Java类型是RouteDefinition,其中常见的属性有:
id:路由唯一表示
url:路由目标地址
predicates:路由断言
filters:路由过滤器
网关登录校验
七.配置管理
微服务重复配置过多,维护成本高
业务配置经常变动,每次修改都要重启服务
网关路由配置写死,如果变更要重启网关
配置共享
1.添加共享配置
2.拉取共享配置
a.引入依赖
b.新建bootstrap.yaml
配置热更新
配置热更新:当修改配置文件中的配置时,微服务无需重启即可使配置生效
小结
八.微服务保护
雪崩问题:微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
解决思路:
1.尽量避免服务出现故障或者阻塞
2.做好远程调用异常的后备方案,避免故障扩散
服务保护方案——请求限流
请求限流:限制访问微服务的请求的并发量,避免服务因流量激增出现故障。
服务保护方案——线程隔离
线程隔离:也叫做舱壁模式,模拟船舱隔板的防水原理。通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散。
服务保护方案——服务熔断
服务熔断:由断路器统计请求的异常比例或慢调用比例,如果超出阈值则会熔断该业务,则拦截该接口的请求。熔断期间,所有请求快速失败,全都走fallback逻辑。
服务保护技术
Sentinel
Sentinel 是一款面向分布式、多语言异构化服务架构的流量治理组件。它主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。
快速入门
请求限流
线程隔离
Fallback
服务熔断
拒绝请求故障服务
九.分布式事务
Seata
Seata 是一款在微服务架构下提供高性能和简单易用的分布式事务服务的开源项目。它致力于解决分布式系统中的事务一致性问题,支持多种事务模式和微服务框架。
官网地址:http://seata.io/
分布式事务解决思路
各个子事务之间必须能感知到彼此的事务状态,才能保持一致
Seata架构
部署TC服务
1.准备数据库表
2.准备配置文件
3.Docker部署
微服务集成Seata
XA模式
优点: 事务的强一致性,确保的事务的acid
缺点:一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差
AT模式
优点:性能较好
缺点:短暂不一致,最终一致