fescar分布式事务管理入门

fescar是阿里开源的一款分布式事务管理服务,基于GTS和TXC进行开发,目前最高版本为0.1.3,目前还没有开源的比较好的分布式事务管理,基于大家熟知的GTS进行开源,未来也会对springCloud进行支持(目前支持dubbo),个人觉着前景还不错,先入个门。

github官网地址:https://github.com/alibaba/fescar

首先把源码下载下来,就拿0.1.3分支举例

将项目到入到idea中,配置fescar的服务启动参数。

 启动成功之后进行例子的启动,在examples模块下,配置好数据源以及执行sql脚本。其中undo_log.sql执行的建表需要在每一个数据源的库里都存在,记录着未提交信息,包括执行前的及执行后的数据变化以及操作。

例子是由四个服务组成,分别是用户、库存、订单以及下单业务的服务。参考fescar的wiki:https://github.com/alibaba/fescar/wiki/Quick-Start

之后启动四个服务就可以了, 最后启动BusinessServiceImpl,他是依赖其他服务的,逻辑是购买商品,先从库存中修改数量,再扣钱,下单,在最后跑了一个异常,会将处理回滚,可以打断点试一下。在抛异常前是提交了数据的,抛异常之后数据回退

 其中遇到的问题

1.启动example时后不断报错,如下,是因为驱动版本比较低,修改一下test模块下的pom.xml,我将mysql驱动修改为5.1.6,mysql版本是8.0.12的

 2.启动BusinessServiceImpl时报错,这个不太清楚什么原因,就是没有发现dubbo的注册者,这个在dubbo-*下四个文件中使用的是组播(multicast)的方式,本人改成了使用zk作为注册中心后解决,如果还没有解决先把BusinessServiceImpl中的下的GlobalTransactional注解去掉,启动调试使dubbo通信没有问题:

Exception in thread "main" org.apache.dubbo.rpc.RpcException: Failed to invoke the method deduct in the service com.alibaba.fescar.tm.dubbo.StorageService. No provider available for the service com.alibaba.fescar.tm.dubbo.StorageService from registry 224.5.6.7:1234 on the consumer 192.168.109.1 using the dubbo version 2.7.0. Please check if the providers have been started and registered.
	at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.checkInvokers(AbstractClusterInvoker.java:265)
	at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:57)
	at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:241)
	at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:75)
	at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:57)
	at org.apache.dubbo.common.bytecode.proxy1.deduct(proxy1.java)
	at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl.purchase(BusinessServiceImpl.java:46)
	at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl$$FastClassBySpringCGLIB$$9dbefa1d.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
	at com.alibaba.fescar.spring.annotation.GlobalTransactionalInterceptor$1.execute(GlobalTransactionalInterceptor.java:64)
	at com.alibaba.fescar.tm.api.TransactionalTemplate.execute(TransactionalTemplate.java:52)
	at com.alibaba.fescar.spring.annotation.GlobalTransactionalInterceptor.invoke(GlobalTransactionalInterceptor.java:61)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
	at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl$$EnhancerBySpringCGLIB$$1c1318d7.purchase(<generated>)
	at com.alibaba.fescar.tm.dubbo.impl.BusinessServiceImpl.main(BusinessServiceImpl.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

 3.启动服务example中的dubbo服务时报错

在test模块下的pom.xml增加

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.1.0</version>
        </dependency>

4.启动server的时候报错,增加启动参数 -XX:MaxDirectMemorySize=1024M

 5.要保证fescar服务与各个数据源网络是通的,否则会出现超时的问题

 

fescar服务端可从这里下载 https://github.com/alibaba/fescar/releases

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值