seata源码学习(2)-环境搭建

准备环境

启动nacos

  1. 解压nacos安装包

  2. 初始化数据库

    新建数据库nacos_config,然后执行conf/nacos-mysql.sql中的脚本,如图

  1. 修改配置文件

    #*************** Config Module Related Configurations ***************#
    ### If use MySQL as datasource:
    spring.datasource.platform=mysql
    
    ### Count of DB:
    db.num=1
    
    ### Connect URL of DB:
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=admin123
    
  2. 启动nacos

    startup.cmd -m standalone

  1. 登录nacos web界面

    打开 http://127.0.0.1:8848/nacos

    用户名密码为nacos/nacos

启动seata

  1. 解压seata安装包

  2. 初始化数据库

    新建数据库seata

    数据库脚本位于源码目录下script/server/db/mysql.sql

执行成功后生成3个表

  1. 修改配置文件

    conf/registry.conf

    把registry和config对象下面的type值改为nacos

    registry {
      # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
      type = "nacos"
      loadBalance = "RandomLoadBalance"
      loadBalanceVirtualNodes = 10
    
      nacos {
        application = "seata-server"
        serverAddr = "127.0.0.1:8848"
        group = "SEATA_GROUP"
        namespace = ""
        cluster = "default"
        username = ""
        password = ""
      }
    }
    
    config {
      # file、nacos 、apollo、zk、consul、etcd3
      type = "nacos"
    
      nacos {
        serverAddr = "127.0.0.1:8848"
        namespace = ""
        group = "SEATA_GROUP"
        username = ""
        password = ""
      }
    
    }
    
    

    conf/file.conf

    修改mode值为db

    设置db对象下面的数据库属性(url、user、password)

    store {
      ## store mode: file、db、redis
      mode = "db"
    
      ## database store property
      db {
        ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
        datasource = "druid"
        ## mysql/oracle/postgresql/h2/oceanbase etc.
        dbTy	pe = "mysql"
        driverClassName = "com.mysql.jdbc.Driver"
        url = "jdbc:mysql://127.0.0.1:3306/seata"
        user = "root"
        password = "admin123"
        minConn = 5
        maxConn = 100
        globalTable = "global_table"
        branchTable = "branch_table"
        lockTable = "lock_table"
        queryLimit = 100
        maxWait = 5000
      }
    
     
    
    }
    
  2. 启动seata server

    bin/seata-server.bat

  1. 查看nacos的服务列表

    生成seata-server服务

运行sample

  1. 下载sample代码

    git clone https://github.com/seata/seata-samples

  2. 导入IDEA

    准备运行springboot-mybatis的样例

几个project的规划如下

项目 端口 说明
sbm-common-service / 公共方法
sbm-storage-service 8081 仓库应用
sbm-order-service 8082 订单应用
sbm-account-service 8083 账户应用
sbm-business-service 8084 业务应用,购物API的入口
  1. 执行sql脚本

    脚本为sql/all_in_one.sql

    可以复制内容放到navicat中直接执行

    数据表如下

    数据库 说明
    db_account account_tbl 账户表
    db_order order_tbl 订单表
    db_storage storage_tbl 仓库表

    image-20210326222154612

  2. 修改所有应用的数据库连接属性

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/db_account?useSSL=false&serverTimezone=UTC
        username: root
        password: admin123
    
  3. 启动分布式应用

    分别启动

    • sbm-storage-service
    • sbm-order-service
    • sbm-account-service
    • sbm-business-service
  4. 调用购物接口

    浏览器访问 http://localhost:8084/api/business/purchase/commit

    返回true表示购物成功

原文地址:https://www.cnblogs.com/huiyao/p/14584610.html