lorne
lorne
TM与TC模块采用的p2p网络结构,在TC端不是p2p网络,在TM上采用的是p2p方式。负载均衡要结合p2p网络优势来实现,存储统一数据库,可以采用redis或者mysql集群。
6.0 相比之前的底层实现上做了些调整。需要依赖分析SQL来完成事务的补偿。目前框架是通过p6spy获取到了执行到的sql,也提供了connection对象,需要基于sql与connection对象获取到。真实影响到的数据。 何为真实影响到的数据? 比如 insert into demo(id,time,name) values(1,123,now()); 中的now() 就是一个可变参数。我们需要拿到now的真实数据,以此理解,还有id的自增长问题,还有修改语句中没有id时,要获取真实影响到的数据。删除语句中真实删除掉的语句。
6.0 唯一主键生成策略
框架中有两个地方需要创建唯一主键。 分别是:事务组 GroupId值的创建 与 事务日志中id的主键策略。数据类型 groupId:string id:long groupid格式未必一定是string,也可以修改成lang类型。但是要保证全局环境中的唯一性
分布式事务需要跨模块的通讯,模块与模块之前需要传递事务的信息,为了不影响业务的情况下,需要将传递数据与业务解耦封装,在框架层面做数据拦截处理。 难点:RPC通讯框架较多,不同的框架存在通讯机制上的差异。
2020-07-02 完成任务 1、TC模块与TM模块的三阶段控制 创建 加入 通知 2、实现了事务日志的记录。 3、RPC模块增加了RestTemplate与Feign的实现。 4、移除了uml的依赖。 5、单元测试定义