5、Nacos 、Sentinel、Seata下载与安装

1、Nacos下载安装运行

  • 第一步:官网:https://nacos.io/zh-cn/index.html

  • 更易于构建云原生应用的动态服务发现,配置管理和服务管理平台;
    在这里插入图片描述
    第二步: 下载
    在这里插入图片描述
    在这里插入图片描述
    第三步:解压安装
    在这里插入图片描述
    双击startup.cmd

java.io.IOException: java.lang.IllegalArgumentException: db.num is null

在这里插入图片描述

  • 解决方式1

如果出现以上错误,需要指令启动:
单机模式启动 window版本 startup.cmd -m standalone

在这里插入图片描述

  • 解决方式2

打开startup.cmd文件,27行的

set MODE="cluster"

修改为:

set MODE="standalone"

也就是说把启动模式从集群改为单机。

第四步:访问登录

  • http://localhost:8848/nacos/index.html#/login
  • 密码和账户同为nacos;

在这里插入图片描述
在这里插入图片描述

也可以使用安装时显示路径登录
在这里插入图片描述

2、Sentinel下载安装运行

第一步:下载地址

  • https://github.com/alibaba/Sentinel/releases

在这里插入图片描述
第二步:安装

  • 下载完成
    在这里插入图片描述
  • 启动cmd,java -jar "D:\aaa_kaifa\2 开发包\sentinel-dashboard-1.8.3.jar"运行

在这里插入图片描述

第三步:运行

  • 访问:http://localhost:8080/#/login

在这里插入图片描述

  • 登录:默认账号密码都是sentinel

在这里插入图片描述

3、Seata下载与安装(本次以1.4.2版本为例)

安装之前必须安装Nacos,如果没有安装Nacos,请查看:

第一步:下载

  • 官网下载:https://seata.io/zh-cn/blog/download.html

在这里插入图片描述

  • 最好下载seata-server-1.4.2.zip、Source code两个包,如果源码包下载不下来也没关系。

在这里插入图片描述
第二步:更改配置

  • 下载完成后,解压seata-server-1.4.2.zip到指定目录;
  • 打开/conf路径下的file.conf文件,修改存储配置file.conf文件相关配置(数据库连接信息,处理事务的全局性表等);

在这里插入图片描述
采坑:driverClassName驱动的配置需要根据mysql的版本决定
mysql5.+使用 driverClassName = “com.mysql.jdbc.Driver”
mysql8使用 driverClassName = “com.mysql.cj.jdbc.Driver”

23:01:25.563  INFO --- [ionPool-Create-2125062626] com.alibaba.druid.pool.DruidDataSource   : put physical connection to pool failed.
23:01:25.568 ERROR --- [ionPool-Create-2125062626] com.alibaba.druid.pool.DruidDataSource   : create connection holder error
==>
java.sql.SQLException: Could not retrieve transation read-only status server
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
     
Caused by: java.sql.SQLException: Unknown system variable 'tx_read_only'
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
    
<==

23:01:25.573  INFO --- [ionPool-Create-2125062626] com.alibaba.druid.pool.DruidDataSource   : put physical connection to pool failed.
Exception in thread "main" io.seata.common.exception.DataAccessException: wait millis 5001, active 0, maxActive 100, creating 0
      

采坑:数据库url后添加serverTimezone


Exception in thread "main" io.seata.common.exception.DataAccessException: wait millis 5000, active 0, maxActive 100, creating 0, createErrorCount 22
      
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
    
  • 修改conf目录下的注册中心类型registry.conf配置文件,此处的namespace就是在后面在Nacos中创建的seata命名空间;

在这里插入图片描述
注意:
①当nacos开启安全配置后,对nacos的连接信息都要带上用户名、密码等信息;

②在seata1.4.2后才可以使用dataId = "seataServer.properties"的方式读取配置信息。

第三步:建表结构

  • 阅读README-zh.md,根据sql语句路径获取建表语句;

在这里插入图片描述

  • 如下图所示为建表语句;

在这里插入图片描述

  • 执行建表语句,得到如图4个表结构;

在这里插入图片描述
第四步:seata事务相关属性更改

  • 如果第一步下载Source code包,可以从里面找到config.txt文件,若没有则根据READEM-zh.md提示,打开config.txt文件(如下图);

在这里插入图片描述
在这里插入图片描述

  • 复制config.txt文件内容并做5处修改

在这里插入图片描述

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=true
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
transport.serialization=seata
transport.compressor=none
# server
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.distributedLockExpireTime=10000
# store
#第1处:model改为db
store.mode=db
store.lock.mode=file
store.session.mode=file
# store.publicKey=""
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100
store.db.datasource=druid
store.db.dbType=mysql
# 第2处:校验自己的数据库版本连接
store.db.driverClassName=com.mysql.cj.jdbc.Driver
# 第3处:改为上面创建的seata服务数据库
store.db.url=jdbc:mysql://localhost:3306/seata?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&rewriteBatchedStatements=true
# 第4处:改为自己的数据库用户名和密码
store.db.user=root
store.db.password=123456
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
# store.redis.sentinel.masterName=""
# store.redis.sentinel.sentinelHosts=""
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
# store.redis.password=""
store.redis.queryLimit=100
# log
log.exceptionRate=100
# metrics
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
# service
# 第5处:自己命名一个vgroupMapping,也可以不修改
#service.vgroupMapping.my_test_tx_group=default
service.vgroupMapping.my_learn_tx_group=default
service.default.grouplist=ip:port
service.enableDegrade=false
service.disableGlobalTransaction=false
# client
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k

注意点:

(1)service.vgroupMapping.my_test_tx_group=default
中的my_test_tx_group需要与bootstrap.yml中配置的seata.tx-service-group的值一致。

(2)service.vgroupMapping.my_test_tx_group=default
配置的default必须要等于registry.conf中配置的cluster=“default”。

(3)store.mode=db配置为db的方式,则需要配置db数据库方式的连接信息
store.db.url、store.db.user、store.db.password,此数据库存储下存放的表
global_table、branch_table、lock_table,用于记录全局性的事务信息

(4)service.default.grouplist=ip:port为访问seata服务器的地址和端口(仅注册中心为file时使用),8091是默认端口。

第五步:Nacos配置

  • 启动Nacos,新建配置,DataId为seata-server,Group为默认分组,文件格式为properties,配置内容选择上步更改好的内容粘贴;

在这里插入图片描述

  • 若是使用seata1.4.2之前的版本,以下的每个配置项在nacos中就是一个条目,需要使用script/config-center/nacos/下的nacos-config.sh或者nacos-config.py执行上传注册。

第六步:启动

  • 启动Seata之前需要保证Nacos是启动成功的;
  • 命令提示符打开目录位置为bin目录之下,执行 seata-server.bat;

在这里插入图片描述

  • 如下则表示启动成功;

在这里插入图片描述

  • 查看Nacos,可以看到Seata服务已注册进服务列表;

在这里插入图片描述
第七步:其他注意项

  • 如果启动失败,有可能是内存中间不足,可以调整JVM启动参数;

在这里插入图片描述

  • Seata 客户端的版本需要和服务端保持一致;
  • 客户端指定的事务分组名称要和 Nacos 相同,比如 service.vgroupMapping.scorpios-tx-group=default。前缀 service.vgroupMapping,后缀可以自定义;

更多Seata资料可参考:https://www.jianshu.com/p/223ad263a822

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux版Nacos: Nacos是一个分布式的配置中心和服务发现系统,它可以帮助开发者轻松地管理动态化的云原生应用。在Linux环境下搭建Nacos需要满足以下需求: - Java环境:Nacos是基于Java开发的,因此需要安装Java环境。 - 安装MySQL:Nacos需要使用MySQL存储配置数据和服务注册信息,因此需要先安装MySQL。 - 启动Nacos服务:在安装Java和MySQL之后,还需要下载Nacos安装包并解压,然后启动Nacos服务。 Mysql: MySQL是一种开源的关系型数据库管理系统,广泛应用于各种Web应用程序中。在Linux环境下搭建MySQL需要满足以下需求: - 安装MySQL软件包:可以从MySQL官网下载MySQL的软件包,然后进行安装。 - 配置MySQL:安装完成后,需要进行一些基本的配置工作,比如设置root用户的密码、创建新的用户等。 - 启动MySQL服务:完成配置后,需要启动MySQL服务。 Sentinel: Sentinel是一款开源的流量控制和熔断降级框架,它可以帮助开发者保护微服务架构下的稳定性。在Linux环境下搭建Sentinel需要满足以下需求: - 安装Java环境:Sentinel是基于Java开发的,因此需要安装Java环境。 - 引入Sentinel依赖:可以通过Maven或Gradle等构建工具引入Sentinel的依赖。 - 配置Sentinel:需要在代码中配置Sentinel的规则和策略,以便实现流量控制和熔断降级。 Seata: Seata是一款开源的分布式事务解决方案,可以帮助开发者实现分布式事务的一致性。在Linux环境下搭建Seata需要满足以下需求: - 安装Java环境:Seata是基于Java开发的,因此需要安装Java环境。 - 引入Seata依赖:可以通过Maven或Gradle等构建工具引入Seata的依赖。 - 配置Seata:需要在代码中配置Seata的规则和策略,以便实现分布式事务的一致性。同时,还需要启动Seata的Server端和Client端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值