从零开始学Seata(Fescar)-部署运行官方DEMO
(本篇文章主要参考了官方网站的Quick-Start,在此基础上结合自身的搭建过程,进行了重新编辑和梳理。)
让我们从一个简单的电商微服务示例开始Seata的学习。
业务场景分析
业务场景是用户购买商品。 整个业务逻辑由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相关推荐
- flowable-6.6.0 运行官方 demo
flowable-6.6.0 运行 官方demo 参考文档:https://flowable.com/open-source/docs/bpmn/ch14-Applications/ 1. 从官网下载 ...
- 4. Fabric2.2 创建通道与加入通道(使用官方Demo)
我们将一步一步搭建Fabric2.2 版本的区块链网络,从0开始搭建服务器环境.到运行官方Demo集群.创建通道.安装合约,以及从零完成基于区块链的农产品溯源项目开发.适用于无区块链开发经验的朋友们, ...
- React Native官方DEMO
官方给我们提供了UIExplorer项目,这里边包含React Native的基本所有组件的使用介绍和方法. 运行官方DEMO步骤如下 安装react native环境 React Native项目源 ...
- 成功运行官方Tensorflow Android的demo的过程
记录下运行tensorflow官方demo的过程 运行环境 windows 10 .Android Studio 3.1.4 1.在github上下载源码 https://github.com/ten ...
- ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
LVGL是一个C语言编写的免费的开源图形库,其提供了用于嵌入式GUI的各种元素.用户可以利用丰富的图形库资源,在消耗极低内存的情况下构建视觉效果丰富多彩的GUI .只需 64kB 闪存和 8kB ...
- 【QCustomPlot】1.3 - 运行官方例程Demo,介绍功能
Qt运行了一遍QCustomPlot官方例程,并记录下功能,以节约大家再次运行花费时间.需要什么功能直接去找对应的代码. 官方Demo 1. axis-tags 动态绘图,无鼠标动作. 2. inte ...
- WebAssembly运行时库(WASM runtime:wasmer 或 wasmtime)\将rust官方demo猜数字编译为WASI目标并使用Wasmer运行
文章目录 WebAssembly运行时库(wasmer 或 wasmtime.wasmer-go) 一.引子 1. 什么是WASI 2. 有哪些优秀的 WebAssembly 运行时? 二.wasme ...
- wps开发笔记:wps端开发运行官方提供demo提示“请允许浏览器打开WPS Office”
下载官方demo 项目运行命令 PS E:\workProject2021\wps-master> cd oaassist PS E:\workProject2021\wps-master\oa ...
- kurento 6.6.0 安装部署 + 运行官网demo
文章所有均在VirtualBox+Ubuntu14.04上进行的. 环境和工具:Java 8.Maven 3.5.0.Node.js 0.10.48.Bower.git. 环境和工具不同,不保证能够正 ...
最新文章
- 【转载】通过sqlserver日志恢复误删除的数据
- c# 模拟window 操作鼠标|winapi
- c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
- Font Awesome 完美的图标字体
- Machine Learning No.7: Support Vector Machines
- OMG,隔壁老王竟然是个GEEK !
- ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...
- Java面向对象(17)--类代码块
- 一本书看懂数字化转型|全新《2021年度案例观察》限时免费送
- 计算机基础知识竞赛报道,学校举办第十四届计算机基础知识竞赛
- java isbn_ISBN书号查询示例代码
- 【APP】模拟器的学习和使用
- 解决HP无线键盘无法连接的问题
- linux shell grep 非贪婪匹配
- 百度地图清除标注和聚合点
- glyphicons 图标大全
- echarts提示信息轮训
- 经济师中级职称计算机考试时间,中级经济师外语职称考试时间
- 【开源小软件 】Bing每日壁纸 让桌面壁纸保持更新
- 中国电子游戏机发展回顾 游戏机手柄从未被禁止