雪花算法
变动位数,性能佳,灵活调整bit位划分,灵活
zk
临时节点和watch机制实现注册中心 ,数据都在内存,nio 多线程模型;
cp注重一致性,集群数据不一致时集群不可用
数据一致性模型
cap 强一致,更新操作完 多个后续进程访问返回最新的更新过的值
弱一致:系统数据写入后 不一定立即读取最新写入数据
最终一致性:所有数据副本 经过一段时间的同步后 最终能够达到一致的状态
因果一致性:因果关系的操作顺序得到保证
会话一致性:对系统数据的访问过程框定在一个会话中
分布式事务
本地消息表:说白了就是一个记录
操作信息 存到库中 成功状态改为成功,失败定时任务重试调用
消息队列:rocketMQ
1.生产者订单系统发送一条half消息到broker
2.创建订单,成功与否 向broker发送commit和rollback
3.向broker提供回调接口,当broker一段时间内half消息没有收到操作命令,则主动调此接口来查询订单是否创建成功
4.half消息commit了,另一个系统来消费,消费成功 消息销毁 分布式事务成功,上一篇有图可see
5.失败则重试策略 再失败 死信队列 等待进一步处理
seata:二阶段提交
微服务框架/at模式/tcc模式/saga模式/xa模式/高可用 https://seata.apache.org/zh-cn/
xa 强一致:acid
rm本地事务隔离行保证全局隔离,串行化隔离级别下性能问题
tm申请全局锁 tc生成xid,tm通过微服务调用链传给其他服务
rm本地事务xid分支事务注册到tc,tc返回说准备吧 rm执行本地事务并告知tc结果
tm请求tc对xid提交或回滚
tc指挥xid所有分支提交 回滚
阿里开源的分布式事务框架 Seata
回滚:回滚日志
分支事务对应数据库一个回滚日志undo_log,收到回滚据undo生成回滚操作
收到提交,undo_log响应记录删除掉
rm和tc
监控拦截jdbc,监控到开启了本地事务 自动向tc注册 生成回滚日志 汇报执行结果
二阶段回滚失败
tc命令rm回滚,一个微服务挂掉了,all微服务不执行回滚,直到正常启动,tc重新执行全局回滚
未待完续
微服务18_分布式事务02:Seatda:四种模式XA、AT、TCC、SAGA-CSDN博客