• docker启动seata1.5.x版本server,集成springboot服务


    长时间出一个技术文章,也不会排版了

    就随意记录一下,能帮到忙,是我的荣幸

    关于seata1.4.x我也不做了,因为升级1.5版本 出现了一些问题,反正跟着我这边做,保证你能运行

    标题已经表明,我将使用docker启动seata1.5版本

    首先本地安装docker运行环境,不知道的可以学一下

    1、配置文件更改

            1.5版本与1.4还是有很多差异的,我只做运行,1.5不在使用registry.conf 与 file.conf , 而是使用的application.yml配置,我们想要发到服务器,或指定nacos地址 ,必须更改配置文件,如下,这边采用了nacos注册中心,并且使用了nacos-config放入seata的配置,seataServer.properties ,自己使用的话,只要更改nacos的两个连接地址即可

    1. server:
    2. port: 7091
    3. spring:
    4. application:
    5. name: seata-server
    6. logging:
    7. config: classpath:logback-spring.xml
    8. file:
    9. path: ${user.home}/logs/seata
    10. extend:
    11. logstash-appender:
    12. destination: 127.0.0.1:4560
    13. kafka-appender:
    14. bootstrap-servers: 127.0.0.1:9092
    15. topic: logback_to_logstash
    16. console:
    17. user:
    18. username: admin
    19. password: admin
    20. seata:
    21. config:
    22. # support: nacos 、 consul 、 apollo 、 zk 、 etcd3
    23. type: nacos
    24. nacos:
    25. server-addr: http://192.168.1.23:8848
    26. namespace:
    27. group: SEATA_GROUP
    28. username:
    29. password:
    30. ##if use MSE Nacos with auth, mutex with username/password attribute
    31. #access-key: ""
    32. #secret-key: ""
    33. data-id: seataServer.properties
    34. registry:
    35. # support: nacos 、 eureka 、 redis 、 zk 、 consul 、 etcd3 、 sofa
    36. type: nacos
    37. preferred-networks: 30.240.*
    38. nacos:
    39. application: seata-server
    40. server-addr: http://192.168.1.23:8848
    41. group: SEATA_GROUP
    42. namespace:
    43. cluster: default
    44. username:
    45. password:
    46. ##if use MSE Nacos with auth, mutex with username/password attribute
    47. #access-key: ""
    48. #secret-key: ""
    49. security:
    50. secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    51. tokenValidityInMilliseconds: 1800000
    52. ignore:
    53. urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

    2、打包将配置导入镜像

            在application.yml旁边建立Dockerfile文件,内容如下

    1. FROM seataio/seata-server:1.5.0
    2. ADD application.yml /seata-server/resources/application.yml

            执行docker命令

            docker build -t seata-server:1.5.0 .

    当前会下载seata,并重新命名seata及版本号,将application.yml同步到镜像中

    1. [+] Building 3.6s (7/7) FINISHED
    2. => [internal] load build definition from Dockerfile 0.0s
    3. => => transferring dockerfile: 31B 0.0s
    4. => [internal] load .dockerignore 0.0s
    5. => => transferring context: 2B 0.0s
    6. => [internal] load metadata for docker.io/seataio/seata-server:1.5.0 2.8s
    7. => [internal] load build context 0.0s
    8. => => transferring context: 4.33kB 0.0s
    9. => CACHED [1/2] FROM docker.io/seataio/seata-server:1.5.0@sha256:1797b0109ed31ef9d1073c77b8a3e89cc1f856f2cac6964b1dbad73a54fcf0fc 0.0s
    10. => => resolve docker.io/seataio/seata-server:1.5.0@sha256:1797b0109ed31ef9d1073c77b8a3e89cc1f856f2cac6964b1dbad73a54fcf0fc 0.0s
    11. => [2/2] ADD application.yml /seata-server/resources/application.yml 0.1s
    12. => exporting to image 0.2s
    13. => => exporting layers 0.1s
    14. => => writing image sha256:356fed758bbd523524d5e6ee7c8ef6317a6ef078555032ee17cd608794dc5bd9 0.0s
    15. => => naming to docker.io/library/seata-server:1.5.0 0.1s
    16. Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

     可以在运行时,进入镜像中查看更改后的内容,在resources目录application.yml

    ===================此时启动seata已经完成了===================

    但是,nacos还没有启动,这点很重要,seata不仅要注册到nacos,还要使用config配置

    3、nacos的启动

            nacos我使用的是2.0.3版本 ,对应的nacos-client版本也必须是2.0.x版本

            docker快速启动

    docker run --name docker-quick -e MODE=standalone -p 8848:8848 -p 9848:9848 -d nacos/nacos-server:v2.0.3

     使用mysql

    docker run -d -p 8848:8848 -p 9848:9848 -e PREFER_HOST_MODE=hostname  -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=127.0.0.1 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=root -e MYSQL_SERVICE_DB_NAME=nacos_db --name nacos-standalone nacos/nacos-server

    启动之后添加seataServer.properties配置

    下面是seataServer.properties内容,注意:驱动必须正确

    1. # 存储模式
    2. store.mode=db
    3. store.db.datasource=druid
    4. store.db.dbType=mysql
    5. # 需要根据mysql的版本调整driverClassName
    6. # mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
    7. # mysql8以下版本的driver:com.mysql.jdbc.Driver
    8. store.db.driverClassName=com.mysql.jdbc.Driver
    9. # 注意根据生产实际情况调整参数host和port
    10. store.db.url=jdbc:mysql://127.0.0.1:3306/seata_db?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
    11. # 数据库用户名
    12. store.db.user=root
    13. # 用户名密码
    14. store.db.password=root
    15. # 微服务里配置与这里一致
    16. service.vgroupMapping.default_tx_group=default

     此时启动seata,就能正常运行了

    4、微服务的启动

            pom文件的配置

    1. <!-- 父工程pom -->
    2. <dependencyManagement>
    3. <dependency>
    4. <groupId>com.alibaba.cloud</groupId>
    5. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    6. <version>2.2.7.RELEASE</version>
    7. <type>pom</type>
    8. <scope>import</scope>
    9. </dependency>
    10. </dependencyManagement>
    11. <!-- 微服务pom -->
    12. <dependency>
    13. <groupId>com.alibaba.cloud</groupId>
    14. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    15. <exclusions>
    16. <exclusion>
    17. <groupId>org.reflections</groupId>
    18. <artifactId>reflections</artifactId>
    19. </exclusion>
    20. </exclusions>
    21. </dependency>
    22. <dependency>
    23. <groupId>org.reflections</groupId>
    24. <artifactId>reflections</artifactId>
    25. <version>0.10.2</version>
    26. </dependency>
    27. <dependency>
    28. <groupId>io.seata</groupId>
    29. <artifactId>seata-spring-boot-starter</artifactId>
    30. </dependency>
    31. <dependency>
    32. <groupId>com.alibaba.cloud</groupId>
    33. <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    34. </dependency>

    application.yml或者bootstrap.yml添加seata的配置

    1. seata:
    2. enable: true
    3. tx-service-group: default_tx_group
    4. registry:
    5. type: nacos
    6. nacos:
    7. # 非本地请修改具体的地址
    8. server-addr: http://192.168.1.23:8848
    9. service:
    10. disable-global-transaction: false
    11. vgroupMapping:
    12. default_tx_group: default

    在更新操作的业务代码上添加全局事务注解

    @GlobalTransactional

    https://gitee.com/seata-io/seata/blob/v1.5.1/script/server/db/mysql.sql#

    seata数据库

    undo_log表

    script/client/at/db/mysql.sql · Seata/seata - Gitee.com

    此时所有的操作已完成,能够正常的使用分布式事务了

            在使用新版本,没有足够了解的情况下,会遇到很多很多问题,不管是nacos2.0.3版本的rpc端口问题,还是seata配置的问题,解决起来特别耗费时间,本人研究的也不是很多,但也希望能够帮助大家节省时间,至于其他研究的话,以后再说吧,如果有不对的地方,劳烦大神指点一下,我这边及时更改,避免给其他小伙伴带来困扰,谢谢大家 

  • 相关阅读:
    如何用 Redis 实现分布式锁
    连接器公司介绍
    linux 定时执行脚本
    PDF转Word文字可编辑的软件有哪些?
    《DevOps 精要:业务视角》- 读书笔记(四)
    2023-09-27 LeetCode每日一题(餐厅过滤器)
    进阶三部曲第一部《Android进阶之光》第2版已出版
    13.计算机视觉
    可视化3个10分类
    二叉树题目:从中序与后序遍历序列构造二叉树
  • 原文地址:https://blog.csdn.net/xinlus/article/details/125432138