mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2026-05-11 06:12:09 +08:00
add 升级 Seata 1.5.X 源码集成服务端
This commit is contained in:
@@ -0,0 +1 @@
|
||||
io.seata.server.auth.DefaultCheckAuthHandler
|
||||
@@ -0,0 +1,2 @@
|
||||
io.seata.server.storage.redis.lock.RedisDistributedLocker
|
||||
io.seata.server.storage.db.lock.DataBaseDistributedLocker
|
||||
@@ -0,0 +1,3 @@
|
||||
io.seata.server.store.DbcpDataSourceProvider
|
||||
io.seata.server.store.DruidDataSourceProvider
|
||||
io.seata.server.store.HikariDataSourceProvider
|
||||
@@ -0,0 +1,4 @@
|
||||
io.seata.server.transaction.at.ATCore
|
||||
io.seata.server.transaction.tcc.TccCore
|
||||
io.seata.server.transaction.saga.SagaCore
|
||||
io.seata.server.transaction.xa.XACore
|
||||
@@ -0,0 +1,3 @@
|
||||
io.seata.server.storage.db.lock.DataBaseLockManager
|
||||
io.seata.server.storage.file.lock.FileLockManager
|
||||
io.seata.server.storage.redis.lock.RedisLockManager
|
||||
@@ -0,0 +1,3 @@
|
||||
io.seata.server.storage.file.session.FileSessionManager
|
||||
io.seata.server.storage.db.session.DataBaseSessionManager
|
||||
io.seata.server.storage.redis.session.RedisSessionManager
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"groups": [],
|
||||
"properties": [
|
||||
{
|
||||
"name": "logging.extend.kafka-appender.bootstrap-servers",
|
||||
"type": "java.lang.String",
|
||||
"defaultValue": "localhost:9092"
|
||||
},
|
||||
{
|
||||
"name": "logging.extend.kafka-appender.topic",
|
||||
"type": "java.lang.String",
|
||||
"defaultValue": "logback_to_logstash"
|
||||
},
|
||||
{
|
||||
"name": "logging.extend.logstash-appender.destination",
|
||||
"type": "java.lang.String",
|
||||
"defaultValue": "localhost:4560"
|
||||
}
|
||||
],
|
||||
"hints": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
org.springframework.context.ApplicationListener=\
|
||||
io.seata.server.ServerApplicationListener
|
||||
@@ -0,0 +1,32 @@
|
||||
# 脚本说明
|
||||
|
||||
## [client](https://github.com/seata/seata/tree/develop/script/client)
|
||||
|
||||
> 存放用于客户端的配置和SQL
|
||||
|
||||
- at: AT模式下的 `undo_log` 建表语句
|
||||
- conf: 客户端的配置文件
|
||||
- saga: SAGA 模式下所需表的建表语句
|
||||
- spring: SpringBoot 应用支持的配置文件
|
||||
|
||||
## [server](https://github.com/seata/seata/tree/develop/script/server)
|
||||
|
||||
> 存放server侧所需SQL和部署脚本
|
||||
|
||||
- db: server 侧的保存模式为 `db` 时所需表的建表语句
|
||||
- docker-compose: server 侧通过 docker-compose 部署的脚本
|
||||
- helm: server 侧通过 Helm 部署的脚本
|
||||
- kubernetes: server 侧通过 Kubernetes 部署的脚本
|
||||
|
||||
## [config-center](https://github.com/seata/seata/tree/develop/script/config-center)
|
||||
|
||||
> 用于存放各种配置中心的初始化脚本,执行时都会读取 `config.txt`配置文件,并写入配置中心
|
||||
|
||||
- nacos: 用于向 Nacos 中添加配置
|
||||
- zk: 用于向 Zookeeper 中添加配置,脚本依赖 Zookeeper 的相关脚本,需要手动下载;ZooKeeper相关的配置可以写在 `zk-params.txt` 中,也可以在执行的时候输入
|
||||
- apollo: 向 Apollo 中添加配置,Apollo 的地址端口等可以写在 `apollo-params.txt`,也可以在执行的时候输入
|
||||
- etcd3: 用于向 Etcd3 中添加配置
|
||||
- consul: 用于向 consul 中添加配置
|
||||
|
||||
## 打包
|
||||
./mvnw -Prelease-seata -Dmaven.test.skip=true clean install -U
|
||||
33
ruoyi-visual/ruoyi-seata-server/src/main/resources/README.md
Normal file
33
ruoyi-visual/ruoyi-seata-server/src/main/resources/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Script Description
|
||||
|
||||
## [client](https://github.com/seata/seata/tree/develop/script/client)
|
||||
|
||||
> Store configuration and SQL for client side
|
||||
|
||||
- at: Script of create table `undo_log` for AT mode.
|
||||
- conf: Configuration which client need.
|
||||
- saga: Script of create table in SAGA mode
|
||||
- spring: Configuration for Spring Boot
|
||||
|
||||
## [server](https://github.com/seata/seata/tree/develop/script/server)
|
||||
|
||||
> Store SQL and deploy script for server side
|
||||
|
||||
- db: Create table script for server when store mode is `db`
|
||||
- docker-compose: Script for deploy server by docker-compose
|
||||
- helm: Script for deploy server by Helm
|
||||
- kubernetes: Script for deploy server by Kubernetes
|
||||
|
||||
## [config-center](https://github.com/seata/seata/tree/develop/script/config-center)
|
||||
|
||||
> Store initialize script for configuration center, will use `config.txt` as configuration when initial
|
||||
|
||||
- nacos: Initialize script for Nacos
|
||||
- zk: Initialize script for ZooKeeper, the script need related script in Zookeeper, you need download yourself. You can modify `zk-params.txt` to change the ZooKeeper server configuration, or input when execute also
|
||||
- apollo: Initialize script for Apollo. You can modify `apollo-params.txt` to change the Apollo server configuration, or input when execute also
|
||||
- etcd3: Initialize script for Etcd3
|
||||
- consul: Initialize script for consul
|
||||
|
||||
## build packege
|
||||
./mvnw -Prelease-seata -Dmaven.test.skip=true clean install -U
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
server:
|
||||
port: 7091
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: ruoyi-seata-server
|
||||
profiles:
|
||||
# 环境配置
|
||||
active: @profiles.active@
|
||||
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
||||
file:
|
||||
path: ./logs/seata
|
||||
# extend:
|
||||
# logstash-appender:
|
||||
# destination: 127.0.0.1:4560
|
||||
# kafka-appender:
|
||||
# bootstrap-servers: 127.0.0.1:9092
|
||||
# topic: logback_to_logstash
|
||||
|
||||
console:
|
||||
user:
|
||||
username: seata
|
||||
password: seata
|
||||
|
||||
seata:
|
||||
config:
|
||||
# support: nacos 、 consul 、 apollo 、 zk 、 etcd3
|
||||
type: nacos
|
||||
nacos:
|
||||
server-addr: @nacos.server@
|
||||
group: @nacos.discovery.group@
|
||||
namespace: ${spring.profiles.active}
|
||||
username:
|
||||
password:
|
||||
##if use MSE Nacos with auth, mutex with username/password attribute
|
||||
#access-key: ""
|
||||
#secret-key: ""
|
||||
data-id: seata-server.properties
|
||||
registry:
|
||||
# support: nacos 、 eureka 、 redis 、 zk 、 consul 、 etcd3 、 sofa
|
||||
type: nacos
|
||||
nacos:
|
||||
application: ${spring.application.name}
|
||||
server-addr: @nacos.server@
|
||||
group: @nacos.discovery.group@
|
||||
namespace: ${spring.profiles.active}
|
||||
cluster: default
|
||||
username:
|
||||
password:
|
||||
##if use MSE Nacos with auth, mutex with username/password attribute
|
||||
#access-key: ""
|
||||
#secret-key: ""
|
||||
security:
|
||||
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
|
||||
tokenValidityInMilliseconds: 1800000
|
||||
ignore:
|
||||
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
|
||||
@@ -0,0 +1,7 @@
|
||||
███████╗███████╗ █████╗ ████████╗ █████╗
|
||||
██╔════╝██╔════╝██╔══██╗╚══██╔══╝██╔══██╗
|
||||
███████╗█████╗ ███████║ ██║ ███████║
|
||||
╚════██║██╔══╝ ██╔══██║ ██║ ██╔══██║
|
||||
███████║███████╗██║ ██║ ██║ ██║ ██║
|
||||
╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright 1999-2019 Seata.io Group.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||
<!-- Context listeners -->
|
||||
<contextListener class="io.seata.server.logging.listener.SystemPropertyLoggerContextListener"/>
|
||||
|
||||
<!-- The conversion rules are copied from `defaults.xml` in the `spring-boot-xxx.jar` -->
|
||||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
|
||||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
|
||||
<!-- The custom conversion rules -->
|
||||
<conversionRule conversionWord="wEx2" converterClass="io.seata.server.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||
|
||||
<!-- common properties -->
|
||||
<springProperty name="PORT" source="server.port" defaultValue="7091"/>
|
||||
<springProperty name="APPLICATION_NAME" source="spring.application.name" defaultValue="seata-server"/>
|
||||
|
||||
|
||||
<!-- console-appender -->
|
||||
<include resource="logback/console-appender.xml"/>
|
||||
|
||||
<!-- file-appender -->
|
||||
<include resource="logback/file-appender.xml"/>
|
||||
|
||||
<!-- logstash-appender: off by default -->
|
||||
<!--<include resource="logback/logstash-appender.xml"/>-->
|
||||
|
||||
<!-- kafka-appender: off by default -->
|
||||
<!--<include resource="logback/kafka-appender.xml"/>-->
|
||||
|
||||
<root level="INFO">
|
||||
<!-- console-appender -->
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
|
||||
<!-- file-appender -->
|
||||
<appender-ref ref="FILE_ALL"/>
|
||||
<appender-ref ref="FILE_WARN"/>
|
||||
<appender-ref ref="FILE_ERROR"/>
|
||||
|
||||
<!-- logstash-appender: off by default -->
|
||||
<!--<appender-ref ref="LOGSTASH"/>-->
|
||||
|
||||
<!-- kafka-appender: off by default -->
|
||||
<!--<appender-ref ref="KAFKA"/>-->
|
||||
</root>
|
||||
</configuration>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<!-- console-appender properties -->
|
||||
<springProperty name="CONSOLE_LOG_PATTERN" source="logging.pattern.console"
|
||||
defaultValue="%clr(%d{HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%25.25t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx2"/>
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
</included>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<!-- file-appender properties -->
|
||||
<springProperty name="LOG_FILE_PATH" source="logging.file.path"
|
||||
defaultValue="${user.home}/logs/seata"/>
|
||||
<springProperty name="FILE_LOG_PATTERN" source="logging.pattern.file"
|
||||
defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%30.30t] %-40.40logger{39} : %m%n%wEx2"/>
|
||||
|
||||
<!--ALL-->
|
||||
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_FILE_PATH}/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.all.log</file>
|
||||
<append>true</append>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_FILE_PATH}/history/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.all.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||
<maxFileSize>2GB</maxFileSize>
|
||||
<MaxHistory>7</MaxHistory>
|
||||
<totalSizeCap>7GB</totalSizeCap>
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<Pattern>${FILE_LOG_PATTERN}</Pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--WARN-->
|
||||
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>WARN</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
<file>${LOG_FILE_PATH}/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.warn.log</file>
|
||||
<append>true</append>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_FILE_PATH}/history/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.warn.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||
<maxFileSize>2GB</maxFileSize>
|
||||
<MaxHistory>7</MaxHistory>
|
||||
<totalSizeCap>7GB</totalSizeCap>
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<Pattern>${FILE_LOG_PATTERN}</Pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--ERROR-->
|
||||
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
<file>${LOG_FILE_PATH}/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.error.log</file>
|
||||
<append>true</append>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_FILE_PATH}/history/${APPLICATION_NAME:-seata-server}.${RPC_PORT}.error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||
<maxFileSize>2GB</maxFileSize>
|
||||
<MaxHistory>7</MaxHistory>
|
||||
<totalSizeCap>7GB</totalSizeCap>
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<Pattern>${FILE_LOG_PATTERN}</Pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
</included>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<!-- kafka-appender properties -->
|
||||
<springProperty name="KAFKA_BOOTSTRAP_SERVERS" source="logging.extend.kafka-appender.bootstrap-servers"
|
||||
defaultValue="127.0.0.1:9092"/>
|
||||
<springProperty name="KAFKA_TOPIC" source="logging.extend.kafka-appender.topic"
|
||||
defaultValue="logback_to_logstash"/>
|
||||
|
||||
<appender name="KAFKA" class="com.github.danielwegener.logback.kafka.KafkaAppender">
|
||||
<encoder>
|
||||
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%p|${APPLICATION_NAME:-seata-server}|${RPC_PORT:-0}|%t|%logger|%X{X-TX-XID:-}|%X{X-TX-BRANCH-ID:-}|%m|%wex</pattern>-->
|
||||
<pattern>{
|
||||
"@timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
|
||||
"level":"%p",
|
||||
"app_name":"${APPLICATION_NAME:-seata-server}",
|
||||
"PORT": ${RPC_PORT:-0},
|
||||
"thread_name": "%t",
|
||||
"logger_name": "%logger",
|
||||
"X-TX-XID": "%X{X-TX-XID:-}",
|
||||
"X-TX-BRANCH-ID": "%X{X-TX-BRANCH-ID:-}",
|
||||
"message": "%m",
|
||||
"stack_trace": "%wex"
|
||||
}
|
||||
</pattern>
|
||||
</encoder>
|
||||
<topic>${KAFKA_TOPIC}</topic>
|
||||
<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>
|
||||
<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
|
||||
<producerConfig>bootstrap.servers=${KAFKA_BOOTSTRAP_SERVERS}</producerConfig>
|
||||
<producerConfig>acks=0</producerConfig>
|
||||
<producerConfig>linger.ms=1000</producerConfig>
|
||||
<producerConfig>max.block.ms=0</producerConfig>
|
||||
</appender>
|
||||
</included>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<!-- logstash-appender properties -->
|
||||
<springProperty name="LOGSTASH_DESTINATION" source="logging.extend.logstash-appender.destination"
|
||||
defaultValue="127.0.0.1:4560"/>
|
||||
|
||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||
<!-- the TCP address of the logstash -->
|
||||
<destination>${LOGSTASH_DESTINATION}</destination>
|
||||
|
||||
<!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">-->
|
||||
<encoder charset="UTF-8" class="io.seata.server.logging.logback.appender.EnhancedLogstashEncoder">
|
||||
<!-- the global custom fields -->
|
||||
<customFields>
|
||||
{
|
||||
"app_name": "${APPLICATION_NAME:-seata-server}"
|
||||
}
|
||||
</customFields>
|
||||
|
||||
<!-- Exclude the provider of data `@version` -->
|
||||
<excludeProvider>net.logstash.logback.composite.LogstashVersionJsonProvider</excludeProvider>
|
||||
<!-- Exclude providers that are not currently needed, reduce some performance loss. -->
|
||||
<excludeProvider>net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider</excludeProvider>
|
||||
<excludeProvider>net.logstash.logback.composite.loggingevent.TagsJsonProvider</excludeProvider>
|
||||
<excludeProvider>net.logstash.logback.composite.loggingevent.LogstashMarkersJsonProvider</excludeProvider>
|
||||
<excludeProvider>net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider</excludeProvider>
|
||||
</encoder>
|
||||
</appender>
|
||||
</included>
|
||||
@@ -0,0 +1,52 @@
|
||||
--
|
||||
-- User: tianyu.li
|
||||
-- Date: 2021/1/19
|
||||
--
|
||||
-- init data
|
||||
local array = {}; local result; local keySize = ARGV[1]; local argSize = ARGV[2];
|
||||
-- Loop through all keys to see if they can be used , when a key is not available, exit
|
||||
for i= 1, keySize do
|
||||
-- search lock xid
|
||||
result = redis.call('HGET',KEYS[i],'xid');
|
||||
-- if lock xid is nil
|
||||
if (not result)
|
||||
-- set 'no' mean There is need to store lock information
|
||||
then array[i]='no'
|
||||
else
|
||||
if (result ~= ARGV[3])
|
||||
then
|
||||
-- return fail
|
||||
return result
|
||||
else
|
||||
-- set 'yes' mean There is not need to store lock information
|
||||
array[i]= 'yes'
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Loop through array
|
||||
for i =1, keySize do
|
||||
-- if is no ,The lock information is stored
|
||||
if(array[i] == 'no')
|
||||
then
|
||||
-- set xid
|
||||
redis.call('HSET',KEYS[i],'xid',ARGV[3]);
|
||||
-- set transactionId
|
||||
redis.call('HSET',KEYS[i],'transactionId',ARGV[(i-1)*6+4]);
|
||||
-- set branchId
|
||||
redis.call('HSET',KEYS[i],'branchId',ARGV[(i-1)*6+5]);
|
||||
-- set resourceId
|
||||
redis.call('HSET',KEYS[i],'resourceId',ARGV[(i-1)*6+6]);
|
||||
-- set tableName
|
||||
redis.call('HSET',KEYS[i],'tableName',ARGV[(i-1)*6+7]);
|
||||
-- set rowKey
|
||||
redis.call('HSET',KEYS[i],'rowKey',ARGV[(i-1)*6+8]);
|
||||
-- set pk
|
||||
redis.call('HSET',KEYS[i],'pk',ARGV[(i-1)*6+9]);
|
||||
-- exit if
|
||||
end
|
||||
-- exit for
|
||||
end
|
||||
-- set SEATA_GLOBAL_LOCK
|
||||
redis.call('HSET',KEYS[(keySize+1)],KEYS[(keySize+2)],ARGV[(argSize+0)]);
|
||||
-- return success
|
||||
return ARGV[3]
|
||||
Reference in New Issue
Block a user