1.什么是分布式事务
    指在分布式架构中出现的事务,无法满足事务的ACID原则

    2.什么是CAP定理
    C: 一致性 A: 高可用性 p: 分区容错性
    CAP定理在分布式架构中同时满足是不可能的,只能在CP和AP之间选择。
    CP强调一致性 AP强调高可用性


    3.什么是BASE理论
    Basically Available(基本可用):保证核心业务可用
    Soft State(软状态):可以允许数据短暂出现不一致
    Eventually Consistent(最终一致性)


    4.常见的分布式事务解决方案
    XA模式:基于XA的2PC,远程管理事务。
    优点:事务强一致性,满足ACID
    缺点:由于事务强一致性,性能差
    AT模式:分阶段提交事务模型,弥补XA模型中资源锁定周期过长的缺陷
    优点:利用全局锁实现读写隔离、无代码侵入
    缺点:框架的快照功能会影响性能
    TCC模式:分阶段提交事务模型,通过人工编码来实现数据恢复
    优点:不需要使用全局锁,比AT性能强
    缺点:有代码侵入性,需要人为编写Try、Confirm、Cancel接口
    SAGA模式:解决长事务的方案
    优点:基于事件驱动实现异步调用、吞吐量高、无锁、性能高
    缺点:时效性差、没有事务隔离、会有脏写问题
    MQ + 本地消息表 :将分布式事务拆分成不同的事务分支,采用消息通知来避免分布式事务,实现最终一致性
    优点:可以实现异步调用、性能高
    缺点:代码实现复杂,一致性比较弱


    5.SeataAT模式基本流程介绍
    SeataAT模式分为二阶段:
    一阶段: 1.分支事务注册到全局事务 @GlobalTransaction开启全局事务,可以在有事务的方法上加
    2.记录undo_log(前镜像回滚+后镜像校验数据)
    3.执行sql并提交
    4.报告事务状态
    二阶段: 1.一阶段全部成功 删除相关的undo_log日志
    2.一阶段失败 根据undo_log日志恢复数据


    6.项目中分布式事务场景及解决介绍
    在进行实名认证业务时,涉及到分布式事务。 有三个微服务四张表。 user服务 (ap_user、ap_user_realname) article服务(ap_author) wemedia服务(wm_user)
    1.用户提交身份认证审核
    2.运营平台审核申请
    3.事务提交成功,为用户创建自媒体账户,添加用户作者信息。
    4.由于微服务都拥有自己的数据库,如果某个微服务由于某些原因(网络不好)造成操作失败,会造成数据库的数据不一致 我们使用的是seata来解决分布式事务。
    seata是alibaba的开源分布式事务一站解决方案,支持的事务模式: AT模式、TCC模式 XA模式 、SAGA模式 我们使用的是AT模式 ,它可以实现原子性事务,代码侵入性低


    7.SeataAT问题
    1.SeataTC宕机:用nacos作为配置中心,搭建集群
    2.由于事务隔离级别是读未提交,会有脏读问题
    3.解决脏读问题:在select 语句后 for update
    4.不会出现脏写问题:通过加全局锁来解决脏写问题
    5.回滚时,如何恢复数据?
    先根据后置镜像进行数据校验,如果当前数据库的数据和后置镜像不一致,说明数据库被Seata1以外的操作修改了,所以回滚会失败,seata会不断的重试回滚。 如果当前数据库的数据和后置镜像一致,会根据前置镜像的数据恢复数据库数据。


    8.阿里云对象存储OSS介绍
    解决分布式存储问题,我们将项目所需的素材信息全部存储到OSS


    9.项目中OSS的具体使用方式
    1.去阿里云官网开通OSS对象存储服务
    2.根据网关下载对应SDK
    3.申请访问的key和密钥
    4.通过Springboot指定配置,将SDk封装成一个起步依赖(FileStorageService)
    5.在项目中直接引用starter依赖

    10.素材上传流程
    1.前端点击上传上传,传入图片
    2.后台使用MultipartFile接受参数
    3.判断用户是否登录
    4.判断上传文件是否正确,如格式是否正确
    5.通过调用阿里云OSS接口上传文件
    6.将信息保存到素材库

    11.自动AI实名认证流程
    1通过用友云调用公安部接口 ,校验身份信息的真实性
    (1)基于身份证OCR扫描接口
    1)识别身份证(正面照、背面照)
    2)识别出用户(姓名、身份证号、身份有效期(判断是否过期))
    (2)调用身份证二要素接口,校验身份证和姓名是否真实
    (3)校验活体检测接口,判断前端采集的用户活体图片是否为真实活人>= 85 分
    (4)对比人证核验接口,用户活体照片和身份证正面照片,如果相似度 >= 85分以上判断为同一个人
    2.2.如果失败,审核结束