hmily
spongeboblz
不要怂,就是干
展开
-
Hmily 源码解析(一)
第一次看源码,也是第一次写分析源码的博文,写的不足之处希望多见谅。Hmily 是分布式事务框架,基于TCC分布式事务概念。关于TCC概念我这边就不复述了,本博文基于对TCC概念有了解的基础上解析Hmily框架的实现。我计划将从两个维度进行分析,一个是业务流转的过程,通过状态的流转,方法调用来分析Hmily。另一个是从类功能的角度分析Hmily。主要以业务流转为主,类功能为辅解析Hmily的实...原创 2019-04-27 15:53:32 · 4848 阅读 · 0 评论 -
Hmily 源码解析(二)—— Hmily事务工作流程
Hmily 源码解析(二)前言这一篇不想谈论Hmily源码的技术实现,而是想在过了一遍hmily的实现后把hmily的工作思路单独地整理出来再进行一次总结。看看能不能进一步有所得。以hmily-demo-springcloud为例,它的实现思路如下。Hmily事务工作流程首先它是基于切面编程来实现分布式事务的操作,及通过日志记录TCC事务的信息以保证最终一致性。前...原创 2019-05-14 00:14:31 · 2978 阅读 · 4 评论 -
Hmily 源码解析(二)
TCC流程这篇我们按照try成功,confirm成功的流程来一步步看一下hmily究竟是如何实现这些功能的。首先我们要启动一下这四个微服务。* 接着我们访问hmily-demo-springcloud-order下的orderPay接口,count为1,amount为1随着程序的调用最终会调用到该方法makePayment,这个方法里面就是我们的分布式事务逻辑。我们可以看到一共有三...原创 2019-05-06 22:46:58 · 2349 阅读 · 1 评论 -
Hmily 源码解析 (三) —— 事务日志实体类
1. HmilyTransaction日志实体类。hmily的核心就是通过事务日志来保证分布式事务的最终一致性,HmilyTransaction就是日志记录的实体映射类。每一个微服务都有一张日志表。在同一个分布式事务之下,每一个微服务都有且会一条自己的事务日志记录,维护各自微服务内的事务处理。属性说明transId事务id。同一个分布式事务下的所有事务日志id都是相同的。tra...原创 2019-06-02 19:38:18 · 658 阅读 · 0 评论 -
Hmily 源码解析(二)—— 执行主体方法
Hmily 源码解析(二) 由于篇幅过长,我们把执行主体方法部分单独拎出,以方便阅读。前面我们执行完了Hmily切面的前置操作,现在要执行主体方法了首先第一步就是将Order实例存储到数据库中,这一步就是对order表执行了try操作,这是我们的第一个try操作第二步执行扣减库存操作,inventoryClient.decrease方法是fegin接口,且拥有@Hmily...原创 2019-05-12 01:00:49 · 808 阅读 · 0 评论 -
Hmily 源码解析(二)—— 调用微服务
由于篇幅过长,将该模块单独拎出一节,接上文Hmily 源码解析(二)—— 执行主体方法上文我们把主体方法的执行及Feign的相关配置讲解了,知道在调用微服务时把对应的HmilyTransactionContext实例以“HMILY_TRANSACTION_CONTEXT”为key作为请求参数一同发送过来,及调用微服务成功之后会把调用接口的方法(有@Hmily注解的)封装为HmilyPa...原创 2019-05-12 15:52:49 · 820 阅读 · 1 评论 -
spongeboblz的博客——分布式事务、TCC、Hmily
Hmily 源码解析(一)Hmily 源码解析(二)目录总纲原创 2019-05-12 15:57:55 · 489 阅读 · 0 评论 -
Hmily 源码解析 (三) —— 高效异步任务框架的使用
目录这是hmily的一个核心,hmily之所以高效就是因为hmily把日志的存储维护操作及confirm,cancel的操作通过Disruptor的异步任务框架的方式执行。关于disruptor的原理如下,我没怎么研究过。后我主要分析hmily是如何使用Disruptor这个框架。高性能队列Disruptor的使用剖析Disruptor:为什么会这么快?(一)Ringbuffer的...原创 2019-06-05 22:24:01 · 1149 阅读 · 0 评论