(本篇文章主要参考了官方网站的Quick-Start,在此基础上结合自身的搭建过程,进行了重新编辑和梳理。)

让我们从一个简单的电商微服务示例开始Seata的学习。

业务场景分析

业务场景是用户购买商品。 整个业务逻辑由3个微服务提供支持:

  1. ·存储服务:扣除特定商品的存储数量。
  2. ·订单服务:根据采购申请创建订单。
  3. ·账户服务:扣除用户账户的余额。

对应逻辑架构图:

基于Dubbo + Seata构建一个简单示例

1步:创建数据库

·要求:带有InnoDB引擎的MySQL。

注意:实际上,示例用例中的3个服务应该有3个数据库。 但是,我们只需创建一个数据库并配置3个数据源。

2步:创建UNDO_LOG

Seata AT模式需要UNDO_LOG表。

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=1 DEFAULT CHARSET=utf8;

3步:创建业务表

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;

4步:启动Seata服务(二选一)

从https://github.com/seata/seata/releases下载服务器包,解压缩。

可自行选择Windows环境或者Linux环境。

如果只是跑demo,看看效果,尤其是集成在eclpse里面运行的时候,Windows环境更方便一些。

Windows环境

直接双击fescar-server.bat执行。

运行窗口

【验证】

通过jcmd,可以找到Seata进程。

linux环境

通过命令sh fescar-server.sh $LISTEN_PORT PATH_FOR_PERSISTENT_DATA启动服务。

例如:

sh fescar-server.sh 8091 /home/admin/fescar/data/

5步:构建示例工程

通过https://github.com/fescar-group/fescar-samples获取示例工程。

然后导入eclilpse工程。

导完后,我们会看到三个子工程:fescar-samples-dubbo、fescar-samples-nacos和fescar-samples-springboot。本文只需要关注fescar-samples-dubbo工程就可以了。

接下来,我们需要修改一下数据源和分布式协调器的配置,才能正常运行。

6步:修改数据源配置

修改配置文件:jdbc.properties

根据刚刚创建的数据库URL /用户名/密码进行修改。

jdbc.account.url=jdbc:mysql://localhost:3306/fescar_demo

jdbc.account.username=root

jdbc.account.password=root

jdbc.account.driver=com.mysql.jdbc.Driver

# storage db config

jdbc.storage.url=jdbc:mysql://localhost:3306/fescar_demo

jdbc.storage.username=root

jdbc.storage.password=root

jdbc.storage.driver=com.mysql.jdbc.Driver

# order db config

jdbc.order.url=jdbc:mysql://localhost:3306/fescar_demo

jdbc.order.username=root

jdbc.order.password=root

jdbc.order.driver=com.mysql.jdbc.Driver

​​​​​​​第7步:启动zookeeper服务(二选一)

从https://www.apache.org/dyn/closer.cgi/zookeeper/找一个镜像下载,解压缩后即可使用。

可自行选择Windows环境或者Linux环境。

由于本文的工程运行在eclpse中,所以使用Windows环境更方便一些。

​​​​​​​Windows环境

直接双击zkServer.cmd执行。

运行窗口

【验证】

通过jcmd,可以找到zookeeper进程。

​​​​​​​linux环境

通过命令 sh bin/zkServer.sh start启动服务。

​​​​​​​8步:修改分布式协调器配置

1)、修改/src/main/resources/spring/dubbo-storage-service.xml

注释掉上面组播的连接模式,启用下方的zookeeper,并修改正确的ip和端口。

<!-- <dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" /> -->

<!--support zk-->

<dubbo:registry address="zookeeper://localhost:2181" />

2)、修改/src/main/resources/spring/dubbo-account-service.xml

注释掉上面组播的连接模式,启用下方的zookeeper,并修改正确的ip和端口。

<!-- <dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" /> -->

<!--support zk-->

<dubbo:registry address="zookeeper://localhost:2181" />

3)、修改/src/main/resources/spring/dubbo-order-service.xml

注释掉上面组播的连接模式,启用下方的zookeeper,并修改正确的ip和端口。

<!-- <dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" /> -->

<!--support zk-->

<dubbo:registry address="zookeeper://localhost:2181" />

​​​​​​​9步:运行三个账户、库存和订单服务

运行服务顺序如下:

1)、运行库存服务

2)、运行账户服务

3)、运行订单服务

​​​​​​​10步:运行业务调用服务

1)、运行业务调用服务之前,检查一下数据库表中的记录情况。

ACCOUNT_TBL表:

STORAGE_TBL表:

2)、运行业务调用服务

3)、运行之后检查两张表是否有变化

ACCOUNT_TBL表:  

STORAGE_TBL表:

结果,发现没有任何变化。说明分布式事务已经在起作用了。

后续,我将再写一篇文章,根据源代码和输出日志,对运行过程做一个梳理。

文章结束。

从零开始学Seata(Fescar)-部署运行官方DEMO相关推荐

  1. flowable-6.6.0 运行官方 demo

    flowable-6.6.0 运行 官方demo 参考文档:https://flowable.com/open-source/docs/bpmn/ch14-Applications/ 1. 从官网下载 ...

  2. 4. Fabric2.2 创建通道与加入通道(使用官方Demo)

    我们将一步一步搭建Fabric2.2 版本的区块链网络,从0开始搭建服务器环境.到运行官方Demo集群.创建通道.安装合约,以及从零完成基于区块链的农产品溯源项目开发.适用于无区块链开发经验的朋友们, ...

  3. React Native官方DEMO

    官方给我们提供了UIExplorer项目,这里边包含React Native的基本所有组件的使用介绍和方法. 运行官方DEMO步骤如下 安装react native环境 React Native项目源 ...

  4. 成功运行官方Tensorflow Android的demo的过程

    记录下运行tensorflow官方demo的过程 运行环境 windows 10 .Android Studio 3.1.4 1.在github上下载源码 https://github.com/ten ...

  5. ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)

      LVGL是一个C语言编写的免费的开源图形库,其提供了用于嵌入式GUI的各种元素.用户可以利用丰富的图形库资源,在消耗极低内存的情况下构建视觉效果丰富多彩的GUI .只需 64kB 闪存和 8kB ...

  6. 【QCustomPlot】1.3 - 运行官方例程Demo,介绍功能

    Qt运行了一遍QCustomPlot官方例程,并记录下功能,以节约大家再次运行花费时间.需要什么功能直接去找对应的代码. 官方Demo 1. axis-tags 动态绘图,无鼠标动作. 2. inte ...

  7. WebAssembly运行时库(WASM runtime:wasmer 或 wasmtime)\将rust官方demo猜数字编译为WASI目标并使用Wasmer运行

    文章目录 WebAssembly运行时库(wasmer 或 wasmtime.wasmer-go) 一.引子 1. 什么是WASI 2. 有哪些优秀的 WebAssembly 运行时? 二.wasme ...

  8. wps开发笔记:wps端开发运行官方提供demo提示“请允许浏览器打开WPS Office”

    下载官方demo 项目运行命令 PS E:\workProject2021\wps-master> cd oaassist PS E:\workProject2021\wps-master\oa ...

  9. kurento 6.6.0 安装部署 + 运行官网demo

    文章所有均在VirtualBox+Ubuntu14.04上进行的. 环境和工具:Java 8.Maven 3.5.0.Node.js 0.10.48.Bower.git. 环境和工具不同,不保证能够正 ...

最新文章

  1. 【转载】通过sqlserver日志恢复误删除的数据
  2. c# 模拟window 操作鼠标|winapi
  3. c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
  4. Font Awesome 完美的图标字体
  5. Machine Learning No.7: Support Vector Machines
  6. OMG,隔壁老王竟然是个GEEK !
  7. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...
  8. Java面向对象(17)--类代码块
  9. 一本书看懂数字化转型|全新《2021年度案例观察》限时免费送
  10. 计算机基础知识竞赛报道,学校举办第十四届计算机基础知识竞赛
  11. java isbn_ISBN书号查询示例代码
  12. 【APP】模拟器的学习和使用
  13. 解决HP无线键盘无法连接的问题
  14. linux shell grep 非贪婪匹配
  15. 百度地图清除标注和聚合点
  16. glyphicons 图标大全
  17. echarts提示信息轮训
  18. 经济师中级职称计算机考试时间,中级经济师外语职称考试时间
  19. 【开源小软件 】Bing每日壁纸 让桌面壁纸保持更新
  20. 中国电子游戏机发展回顾 游戏机手柄从未被禁止

热门文章

  1. 日常英语 :How to refuse politely
  2. 【分类算法】什么是分类算法
  3. iPhone —— 如何自制铃声(图文)
  4. 中国平行进口汽车行业调研与未来预测报告(2023版)
  5. Ionic+Cordova开发环境搭建
  6. c语言删除数组中的最小值,C语言中删除数组中某个元素的方法
  7. 企业级开源邮件系统搭建的全过程
  8. 手机备忘录怎么设置每周二周四周末提醒
  9. Harbor应用案例:网易轻舟微服务平台
  10. 【数据库索引背后的数据结构】一个常见的面试题,详解B+树结构