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

什么是Fescar

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

安装Fescar环境

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

Github下载链接

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

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

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

运行Fescar

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

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

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

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

运行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,将里面的数据库配置改为本机数据库的信息

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

    <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端口失败的情况。

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

运行分布式事务

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

-Djava.net.preferIPv4Stack=true。

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

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

运行结果

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

在这里插入图片描述

在这里插入图片描述

你可能感兴趣的:(分布式系统,Fescar,分布式事务,阿里,开源,微服务)