阿里分布式事务框架Fescar简介以及搭建Fescar环境并运行官方demo进行测试

什么是Fescar

FESCAR(Fast & Easy Commit And Rollback) 是一个用于微服务架构的分布式事务解决方案,它的特点是高性能且易于使用,旨在实现简单并快速的事务提交与回滚,由阿里开源。框架的具体架构设计详见Fescar的Github的wiki界面

安装Fescar环境

首先去Fescar官方的Github上下载源码或者成果物。

Github下载链接

可以选择下载源码并使用编译器编译运行或者直接下载成果物使用脚本运行,这里使用的是下载源码并使用编译器编译运行的方式。

将下载完成后的代码导入IDEA中,得到Fescar的开发环境。

在这里插入图片描述

运行Fescar

打开Server子项目,选择Server.java编译运行。

在这里插入图片描述

运行Server的时候必须指定相应的端口,否则会默认为0导致dubbo服务无法连接Fescar Server。

在这里插入图片描述

运行dubbo服务

首先在数据库中建立需要的数据库和数据库表

CREATE DATABASE demo;
USE demo;

CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_unionkey` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=159 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `storage_tbl`;
CREATE TABLE `storage_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `commodity_code` varchar(255) DEFAULT NULL,
  `count` int(11) DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY (`commodity_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `order_tbl`;
CREATE TABLE `order_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(255) DEFAULT NULL,
  `commodity_code` varchar(255) DEFAULT NULL,
  `count` int(11) DEFAULT 0,
  `money` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `account_tbl`;
CREATE TABLE `account_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(255) DEFAULT NULL,
  `money` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

接着选择examples子项目,首先进入resources文件夹,修改下面的四个xml,将里面的数据库配置改为本机数据库的信息

在这里插入图片描述

    <property name="url" value="jdbc:mysql://xxx:3306/demo"/>
    <property name="username" value="xxx"/>
    <property name="password" value="xxx"/>

然后首先运行OrderServiceImpl.java的main方法,然后运行StorageServiceImpl的main方法,在运行之前需要设置参数-Djava.net.preferIPv4Stack=true,防止计算机默认使用IPv6地址,否则会出现bind端口失败的情况。

在这里插入图片描述

运行分布式事务

接着运行BusinessServiceImpl.java中的main方法,同样需要设置参数

-Djava.net.preferIPv4Stack=true。

在这里插入图片描述

可以看到在接着运行BusinessServiceImpl.java中通过dubbo提供的rpc服务调用了之前启动的storageService和orderService,实现了分布式事务。

运行结果

最终数据库的两张表account_tbl和storage_tbl中会有相应的数据。

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
Java分布式事务框架有多种选择,其中一种常用的框架是Hmily。Hmily是一个开源的、基于Java的分布式事务解决方案,它可以帮助开发人员处理分布式事务的一致性问题。 Hmily提供了多种分布式事务解决方案,包括两阶段提交协议(2PC)、TCC补偿模式和最大努力通知模式等。通过使用Hmily,开发人员可以在分布式系统中实现事务的一致性。 在使用Hmily框架时,需要对数据库进行配置。例如,在Hmily-demo-tcc-springcloud-order项目的application.yml文件中,可以配置数据库的相关信息,包括数据库驱动、URL、用户名和密码等。这样,Hmily框架就可以通过配置的数据库信息来进行事务的管理和控制。 总结起来,Java分布式事务框架Hmily可以帮助开发人员处理分布式事务的一致性问题,提供了多种解决方案,包括2PC、TCC和最大努力通知等。在使用Hmily时,需要对数据库进行配置,并通过配置信息实现事务的管理和控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【分布式】java实现分布式事务的五种方案](https://blog.csdn.net/u011397981/article/details/129829072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Java基础之《分布式事务(4)—分布式开源框架使用》](https://blog.csdn.net/csj50/article/details/124443588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值