00:03
好,那么下边我们就来看一下XC模式,这种架构到底什么是XC啊模式是吧,我们看啊,这这官方这个图。把这官方这个图,呃,这老雷给大家把这个详细的步骤啊来写了一下,SC模式是一个典型的two PC的,看到了吧,两阶段提交的啊,两阶段提交。呃,典型的two PC,然后其执行原理。哎,你看着这个这个图有点小啊,官方给的这个图就比较小。第一个啊,首先什么PM向PC发起指令,开启一个全局事务,就在这,然后就在这。TMTC是吧。globalaction给。是吧,呃,紧接着第二步,根据月业务要求,各个RM,各个RM会逐个向TC注册分支15。
01:00
哎,这这里边这你注意这不是吧,我们的分支分支事五是吧,干嘛看到没有transaction。Transaction,我注册分之十五。是吧?然后TC会逐个向RM发出预执行的指令。他会给他们发出预制性指令。那么紧接着第三步。各个R在接收到这个指令以后,会进行本地事务。预知性。你说我们这儿前面不是有那个什么预提交预扣款,这就是预执行是吧?啊,我我给你注册了,然后你给我啊发过来这个预执行的指令,我这边就可以进行预执行了。A,看到了没有啊。它实际上由什么构成,由这个xa start,这是circle,这是xa结束。
02:05
是吧,开始,然后circle,然后结束,这不就一个事物。是吧,Xa事物的开始,然后执行,然后结束,这整个就是xa。呃,然后呢,2M将执行结果report给TC。看到没有预执行的这个结果干嘛?Branch status report。Branch的状态就我执行结果呀,我上报给了TC。不光我上报,都上报,大家注意啊,都会都会上报,你上报你的,我上报我的啊。然后,当然这个结果可能是成功的,也可能是失败的。然后PC在接收到四个RM的report后。介绍会。会将汇总结果上报给TM,他会把汇总的结果诶给了TM。知道吧,然后根据汇总结果,TM会向TC发出确认指令。
03:05
根据汇总结果向他发出确认指令。这个汇总结果。是要求什么,所有分支。全部。你注意啊,这是two PC的啊,我们说他他本身two PC有它的问题。其中一个很大的一个问题就是他要求所有的分支。执行结果全部是成功。我才会确认指定才是什么global。否则只要有一个branch给出来是失败,那么我这儿就是global。所以这也是two PC啊,它存在的问题,所以three PC就解决了这个问题啊,允许你有一定的。呃,失败率。允许你有一定的失败率,不是所有的都成功。明白吧,当然你你如果不清楚啊,这个重新再从网上再找一些关于这个two PC PC的相关的。
04:06
资料再看一下啊。然后呢啊,然后根据这个像像TC发出确认指令,如果所有结果都是成功的响应,则TC发送只要有结果失败。只要结果是,只要有结果是失败响应TC项呃,TC发送。对吧,然后呢,TC在接到指令后,再次向RM发送发送确认指令,你看我你这不给我发过来了是吧,然后呃,我这儿呢。这是branch commit或者是。这个之类我我再发给你。发给我们的这个transaction。对吧,这是什么?这就是典型的我们的xa模型模式。
05:02
呃,刚才给大家说了啊,我们的这个。刚才这我们这个解决思路啊。诶。他。就是,呃。事物消息方案啊。事物消息方案,它不是一个典型的xa,你看我典型的xa他们是什么?他们的执行。他们的执行是并行的,是异步的,谁也不用等谁,谁执行谁的就行了。但是我们这个是什么。呃,我们的事物消息方案它是。先执行它下边这个是我们的,呃,Broke啊。先执行我们的消息是吧,你这个预提交成功了,然后再执行他。
06:07
所以他们之间是什么,有个先后顺序,这是同步的。对不对,这是同步的啊。这是。这个xa模式。呃,到这儿啊,老雷再给大家说说一点需要注意的吧,我们放到放到。嗯,这没地儿放啊是吧,这个。我我也写到。嗯,讲到这儿吧,嗯。注意。写写个。哎呀,这个这个写这写个六吧。把这改成七。等着七。啊,注意注意什么呢?就是我们的啊。
07:01
呃,事物。消息。不支持。延迟下去。不支持就是你不能你这个社会消息啊,这种你不能让他延迟。不知延迟消息。这是第一点需要注意的,第二点需要注意的就我们事消息。我们事物消息啊,你在写这样代码的时候需要做好什么幂等线检查?对于事物。消息。要做好。嗯。密的一些,呃,这个。正常。为什么?因为。因为事务性。呃,消息,呃,我们的事物消息15。我们的事务消息啊,事务消息,呃,可能。不值。以此啊,被。小声。
08:01
可能不止一次被。被消费,呃,为什么呢?因为这里面可能因因为它存在回滚的情况。是吧,他存了回滚,回滚以后我再提交啊。是吧,啊,因为存在。回滚。呃,再提交的。所以他可能不止被被消费一次,所以你就得做好这个密等性的检查。这我们需要。注意的需要注意的这么一点啊。OK。呃,关于这个事务消息啊,相关的一些理论知识还是比较多的。我们一会我们写个代码看一下。
我来说两句