1在分布式系统下(单机synchronzied,lock无法实现分布式锁),如何实现加锁:采用缓存如redis等实现加锁,或者采用数据库乐观锁(如何避免redis宕机导致锁失效?)
2数据库集群:多个读库,一个写库。(mycat实现读写分离)高可用mha ,pxc
3分布式事务(mq,seata,gts,lcn,saga)
2PC 请求提交prepareCommit,提交doCommit,简单粗暴,同步阻塞,强一致性
3PC 预提交(try),请求提交(prepareCommit),doCommit (可以超时提交,最终一致性)
分布式事务有多种主流形态,包括:
- 基于消息实现的分布式事务
- 基于补偿实现的分布式事务
- 基于TCC实现的分布式事务(3PC):(try 接口,comfirm 接口,cancel接口)预约事务,预先扣下押金,等执行完成,实现支付,失败返回押金。
- 基于SAGA实现的分布式事务
- 基于2PC实现的分布式事务:协调员发起执行请求,参与者反馈是否可以执行,线程挂起,等待协调通知的时候统一提交或者回滚,如果全部可以执行,协调员发送提交指令,如果有一个参与者不能执行,协调员发送取消指令。(同步阻塞问题)