建议先关注、点赞、收藏后在阅读。
在Hmily框架中,异步调用是通过两阶段提交(Two-Phase Commit,2PC)来实现的。
Hmily框架支持异步调用,具体原理如下:
- 第一阶段(try阶段):
- 在业务发起方执行业务方法前,会向Hmily事务管理器注册一个全局事务,并生成一个全局事务ID(GTXID)。
- Hmily事务管理器会将GTXID保存到ThreadLocal中,以便在整个调用链中进行传递。
- 业务发起方执行完业务方法后,会生成一个本地事务ID(LTXID),并将LTXID与GTXID关联到一起。
- 业务发起方将LTXID和对应的业务操作信息发送到参与方(比如远程服务)。
- 第二阶段(commit阶段):
- 参与方接收到LTXID和业务操作信息后,会先执行自身的业务操作,并将LTXID和执行结果返回给业务发起方。
- 业务发起方再将LTXID和执行结果发送到Hmily事务管理器。
- Hmily事务管理器会将LTXID对应的执行结果进行汇总,检查是否所有参与方都执行成功。如果有任何一个参与方执行失败,Hmily事务管理器会进行回滚操作。
- 如果所有参与方都执行成功,Hmily事务管理器会发出commit指令,要求各参与方进行正式提交。
- 第三阶段(confirm阶段):
- 在收到commit指令后,各参与方进行正式提交,将事务的执行结果正式持久化。
- 如果有任何一个参与方提交失败,Hmily事务管理器会发出rollback指令,要求各参与方进行回滚。
- 如果所有参与方都提交成功,Hmily事务管理器会执行最终状态的确认操作。
通过这种方式,Hmily框架可以实现跨服务的异步调用,保证一系列业务操作的原子性和一致性。
对于高并发的场景,Hmily-TCC分布式事务考虑和优化了以下性能方面:
- 分布式事务快速提交: Hmily-TCC提供了快速提交的功能,通过使用本地方法执行分布式事务的确认阶段,减少了网络开销和分布式事务管理的延迟。这有效地提高了事务的吞吐量和性能。
- 高效的事务补偿机制: Hmily-TCC通过补偿机制来处理分布式事务中的异常情况,保证数据的一致性。补偿机制的设计考虑了性能方面的优化,在补偿时会进行批量回滚,减少了网络通信的开销,提高了分布式事务的性能。
- 高效的事务日志记录: Hmily-TCC使用异步的方式记录事务日志,减少了事务日志记录对业务方法的执行时间的影响。通过异步的方式,事务日志的写入将不会阻塞主流程的执行,从而提高了系统的性能。
- 基于注解的事务拦截: Hmily-TCC使用注解的方式进行事务拦截,简化了事务管理的配置和编程工作。注解的方式可以更加高效地进行事务切面的织入,提高了分布式事务处理的性能。
- 支持并行事务处理: Hmily-TCC支持并行事务处理,允许多个事务同时执行。这些并行的事务可以通过异步机制来进行处理,提高了并发场景下的性能和吞吐量。
- 优化的资源锁定策略: Hmily-TCC通过优化资源的锁定策略,减少了分布式事务对资源的争用。通过仅在事务需要锁定资源时进行锁定,以及尽快释放锁定资源,提高了系统的性能和并发能力。
以上是Hmily-TCC分布式事务对于高并发场景的性能方面的考虑和优化。