Gateway网关:路由 用户鉴权
Nacos注册中心:服务注册与发现 配置中心
Sentinel熔断:服务流量控制和服务降级
Feign:远程调用
Dubbo:远程调用 高并发情况下 比Feign好用
Setea:分布式事务解决方案
Ribbon:负载均衡
简称ACID
A 原子性 事务是一个完整的操作 事务各步骤是不可分的 要么都执行 要么都不执行
C 一致性 事务完成的时候 数据必须处于统一状态
I 隔离性 对数据修改所有并发事务是隔离的 事务是独立的 它不应该以任何方式依赖于或影响其他
事务
D 永久性 事务完成后 它对数据库的修改永久保持
首先说一下事务并发会引起的三种情况
脏读
A事务对一条记录进行修改 尚无提交 B事务已经看到了A的修改结果 若A发生回滚 B读到的数
据就是错误的
不可重复读
A事务对一条记录进行修改 尚无提交 B事务第一次查询该记录 看到的是修改之后的结果 此时
A发生回滚 B事务又一次查询该记录 看到的是回滚的结果 同一个事务内 B两次查询结果不一致 这
就是不可重复读
幻读
A事务对所有记录进行修改 尚未提交 此时B事务创建了一条新记录 A B都提交 A查看所有数
据 发现有一条数据没有被修改 因为这是B事务新增的 就像看到幻象一样 这就是幻读
非重复度和幻像读的区别: 非重复读是指同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。
幻像读是指同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。
表面上看,区别就在于非重复读能看见其他事务提交的修改和删除,而幻像能看见其他事务提交的插入。
默认
使用数据库默认隔离级别
读未提交
事务尚无提交 其他事务可以看到该事务的修改结果 隔离级别最差,脏读、不可重复读、幻读
都不能避免。
读已提交
事务只能看到其他事务提交之后的数据。可避免脏读,不可重复读、幻读无法避免。
不可重复读原因:A事务修改,B事务查询,A提交前和提交后,B事务看到的数据是不一致的。
幻读原因:A事务修改,B事务新增,B事务提交前,A事务已经提交。B事务提交后,A发现仍有
数据未修改。
可重复读
一个事务多次查询,无论其他事务对数据如何修改,看到的数据都是一致的。因为A事务查询
数据时,若B同时在修改数据,A事务看到的永远是B事务执行前的数据。只有当A提交或者回滚之
后,看到的才是最新的被B修改知乎的数据。可避免脏读、不可重复读,幻读无法避免。
序列化
事务顺序执行,可避免脏读、不可重复读、幻读,但效率最差。因为A事务执行时,其他事务
必须等待。