什么是分布式事务

在分布式架构中,操作数据库的事务问题

什么是CAP定理

c:一致性,用户访问分布式系统中的任意节点,得到的数据必须一致
A:可用性:用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝
p:分区容错性:为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区
分区容错性是一定要满足的,所以只能满足cp或Ap

什么是BASE理论

是对CAP的解决思路,包含三个思想:
BA:基本可用:分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
S:软状态:在一定的时间内,允许出现不一致的状态,但最终要达成一致
E:最终一致性:虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

常见的分布式事务解决方案

AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致;

CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。

SeataAT模式基本流程介绍

两个阶段:
第一阶段:
1、当标注了@GlobalTransactional的方法开始执行时,TM(全局事务管理器)会向全局事务表注册全局事务
2、TM(全局事务管理器)调用分支事务并向分支事务表注册分支事务,解析其中的sql语句,根据解析结果,查询前置镜像,执行sql语句,再查询后置镜像,将前后镜像内容保存到undolog日志中。
3、完成上述操作后,上报分支处理状态
第二阶段:
当所有分支事务都成功,则删除日志即可
当有分支事务失败时,seata通过全局id和分支id找到undolog日志,根据日志内容回滚,回滚时,会比对后置镜像与数据库的数据是否一致,一致则会滚,删除日志,不一致,则触发重试策略。

项目中分布式事务场景及解决介绍

场景:
实名认证:
user服务里实名认证通过后,会注册两个账号,分别是自媒体账号和作者账号。
注册自媒体账号时会通过fegin调用自媒体服务里的根据app用户名查找自媒体用户账户信息,若有,说明注册过了则不注册,没有则再通过fegin调用自媒体服务中的注册自媒体用户的方法注册账号
注册作者账号时,会通过fegin调用文章服务中根据app用户id查询作者信息的方法,若用,说明已经注册过作者账号,没有则通过fegin调用创建作者账户信息的方法创建账号

阿里云对象存储OSS介绍

阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。

素材上传流程

前端发起请求后,后端先判断请求参数是否为空,在判断当前是否登录,然后在判断上传的文件后缀名是否是允许上传的文件。然后防止文件名上传后出现重复发生覆盖,会在后端将文件名用UUID进行替换。之后调用ossApi进行上传,再在本地数据库保存一份。

自动AI实名认证流程

在app端用户发起实名认证,需要上传:姓名、身份证号、身份证正面照、活体检测图片,在ap_user_realname中添加一条信息;
活体检测图片采集: app端调用摄像头进行人脸采集,保留完整活体照片;
首先管理员可以对身份信息进行初步审核,审核通过后再通过AI审核
根据身份证正面照调用身份证OCR接口检测身份证的真实性,从返回结果中获得身份证号和姓名
调用身份证二要素接口,验证姓名和身份证号是否真实
调用活体检测监控,检测活体照片是否真人自拍照
调用人证核验接口,检测活体照片和身份证上的人像照片是否是同一人
如果失败将状态改为审核失败的状态,审核结束。