1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/typ1805-tansci-cloud

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
doc.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 29.04.2025 07:46 a1bf674

Система Tansci Cloud

Проект Tansci Cloud основан на микросервисной архитектуре, использующей SpringCloud Alibaba + Vue3.2 + Element Plus.

Этот проект включает необходимые компоненты для разработки распределённых микросервисных приложений, что облегчает разработчикам использование этих компонентов через модель программирования Spring Cloud для создания распределённых приложений.

С использованием Spring Cloud Alibaba вам достаточно добавить несколько аннотаций и минимальную конфигурацию, чтобы интегрировать Spring Cloud приложение с решением Alibaba для микросервисов, и использовать промежуточные компоненты Alibaba для быстрого создания распределённых приложений.

Проект разделён на микросервисную версию и монолитную версию:

Монолитная версия:

Схема архитектуры SpringCloud

Схема архитектуры SpringCloud

Функциональность архитектуры находится в разработке...

Требования к окружению

Название Версия Описание
JDK 1.8+ Обязательное требование
MySQL 5.7+ База данных
Redis 5.0+ База данных NoSQL
Nginx 1.16+ Перенаправление запросов, обратный прокси
Maven 3.8+ Сборка проекта, управление
Git 2.14+ Управление версиями проекта
Node 14.16+ Требования к окружению фронтенда
├─docs                            # Документация, включая SQL-скрипты
├─tansci-api                      # Модуль API
├─tansci-auth                     # Безопасность и аутентификация
├─tansci-common                   # Общие модули
│  ├─common-core                  # Общие ядра
│  ├─common-database              # Общие источники данных
│  ├─common-web                   # Общие модули WEB
│  └─common-redisson              # Распределенные блокировки
├─tansci-gateway                  # Шлюз
├─tansci-modules                  # Модуль Service
│  ├─tansci-admin-service
│  └─tansci-scheduled-service
└─tansci-view                     # Фронтенд проекта
    ├─public
    └─src
        ├─api                     # Конфигурация API сервиса
        ├─assets                  # Статические ресурсы
        ├─components              # Общие компоненты
        ├─router                  # Маршрутизация
        ├─store                   # Упаковка Pinia
        ├─styles                  # Общие стили
        ├─types                   # ts
        ├─utils                   # Инструменты
        └─views                   # Модули функциональности

Порядок запуска проекта

Запуск backend

Создать базу данных, выполнить docs/sql/tansci_cloud.sql, docs/sql/tansci_config.sql SQL-инициализацию данных;

Порядок запуска модулей:

  • TansciAdminServiceApplication
  • TansciAuthApplication
  • TansciGatewayApplication
  • TansciScheduledServiceApplication

Остальные модули можно запускать в произвольном порядке

Запуск frontend

npm install  # Инициализация проекта

npm run dev  # Запуск проекта
```После успешного запуска проекта перейти по адресу: [http://localhost:3000](http://localhost:3000)

> Тестовый пользователь admin / admin123

----

## Настройка Nacos

Ссылка для загрузки: [https://github.com/alibaba/nacos/releases](https://github.com/alibaba/nacos/releases)

> Пример для версии nacos 2.0.4

#### 1. Операционная система Windows

Измените конфигурационный файл `nacos-server-2.0.4/conf/application.properties`

```yml
#*************** Настройки, связанные с модулем конфигурации ***************#
### Если использовать MySQL в качестве источника данных:
spring.datasource.platform=mysql

### Количество баз данных:
db.num=1

### URL подключения к базе данных:
db.url.0=jdbc:mysql://127.0.0.1:3306/tansci_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

Запустите nacos-server-2.0.4/bin/startup.cmd для запуска Nacos.

2. Операционная система Linux

# linux
cd /usr/local/nacos/bin
./startup.sh -m standalone

Перейти по адресу в браузере: http://localhost:8848/nacos

По умолчанию имя пользователя и пароль nacos/nacos

Если использовать тестовую среду в качестве центра регистрации, создайте собственное пространство имен для регистрации сервиса, чтобы избежать использования несколькими пользователями.

Настройка Sentinel

Ссылка для загрузки: https://github.com/alibaba/Sentinel/releases

Пример для версии sentinel 1.8.3

Запустите команду:

# windows
java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.3.jar
```# Linux
nohup java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -jar /usr/local/sentinel/sentinel-dashboard-1.8.3.jar &

Перейти по адресу в браузере: [http://localhost:8080](http://localhost:8080)

> По умолчанию имя пользователя и пароль `sentinel/sentinel`
>
> Где -Dserver.port=8080 используется для указания порта консоли Sentinel в 8080.
>
> Внимание: запуск консоли Sentinel требует версии JDK 1.8 или выше.----

## Конфигурация Seata

Официальный сайт: [https://seata.io](https://seata.io/)

Ссылка для загрузки: [https://seata.io/zh-cn/blog/download.html](https://seata.io/zh-cn/blog/download.html)

> Пример для версии seata 1.5.2

**Изменение конфигурации**

Измените файл конфигурации `application.yml` в папке conf:

```yaml
server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/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:
    # поддерживаемые: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      namespace: d01a5728-d581-438a-a0e8-e180a08f1e6d
      group: SEATA_GROUP
      username: nacos
      password: nacos
      data-id: seataServer.properties
  registry:
    # поддерживаемые: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    preferred-networks: 30.240.*
    nacos:
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: SEATA_GROUP
      namespace: d01a5728-d581-438a-a0e8-e180a08f1e6d
      cluster: default
      username: nacos
      password: nacos
  store: # этот параметр не играет большой роли, так как конфигурация базы данных будет вновь импортирована из конфигурации nacos
    # поддерживаемые: file, db, redis
    mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/tansci_seata?rewriteBatchedStatements=true
      user: root
      password: weqfd4312
      min-conn: 5
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 100
      max-wait: 5000
#  server:
#    service-port: 8091 # Если не указано, используется значение '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**
```Инициализация базы данных `docs/sql/tansci_seata.sql`.```**Конфигурация Nacos**

1. Добавить конфигурацию `service.vgroupMapping.default_tx_group`
```yaml
Data ID: service.vgroupMapping.default_tx_group

Group: SEATA_GROUP

# Конфигурационное содержимое:
default
  1. Добавить конфигурацию seataServer.properties
Data ID: seataServer.properties

Group: SEATA_GROUP

# Конфигурационное содержимое

# Подробная информация о конфигурационных параметрах см. по адресу https://seata.io/zh-cn/docs/user/configurations.html
# Настройка транспорта, для клиента и сервера
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.enableTcServerBatchSendResponse=false
transport.rpcRmRequestTimeout=30000
transport.rpcTmRequestTimeout=30000
transport.rpcTcRequestTimeout=30000
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
```# Настройка маршрутизации транзакций, только для клиента
service.vgroupMapping.default_tx_group=default
# Если вы используете регистратор, вы можете его игнорировать
service.default.grouplist=127.0.0.1:8091 # Измените на IP:PORT онлайн
service.enableDegrade=false
service.disableGlobalTransaction=false
```# Настройка правил транзакций, только для клиента
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=true
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.sagaJsonParser=fastjson
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
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
# Для режима транзакций TCC
tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1 час # Конфигурация правил журналирования для клиента и сервера
log.exceptionRate=100```# Конфигурация хранения транзакций, только для сервера. Значения конфигурации файла, базы данных и Redis являются необязательными.
store.mode=file
store.lock.mode=file
store.session.mode=file
# Используется для шифрования паролей
store.publicKey=

# Если `store.mode`, `store.lock.mode`, `store.session.mode` не равны `file`, можно удалить этот блок конфигурации.
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 mode` равен `db`. Если `store.mode`, `store.lock.mode`, `store.session.mode` не равны `db`, можно удалить этот блок конфигурации.
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true # Измените на IP:PORT онлайн
store.db.user=root # Измените
store.db.password=root # Измените
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 mode` равен `redis`. Если `store.mode`, `store.lock.mode`, `store.session.mode` не равны `redis`, можно удалить этот блок конфигурации.
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# Конфигурация правил транзакций, только для сервера
server.recovery.committingRetryPeriod=1000
server.recovery.asynchronousCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.distributedLockExpireTime=10000
server.xaerNotaRetryTimeout=60000
server.session.branchAsyncQueueSize=5000
server.session.enableBranchAsyncRemove=false
server.enableParallelRequestHandle=false# Настройка метрик, только для сервера
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898```

**Запуск**

```shell
# Windows
Перейти в директорию /bin и запустить seata-server.bat

# Linux
cd /bin
./seata-server.sh

Доступ по адресу: http://localhost:7091, seata/seata

Использование

В базе данных сервиса, который использует распределенные транзакции, создайте таблицу undo_log, добавьте аннотацию: @GlobalTransactional(rollbackFor = Exception.class).

CREATE TABLE `undo_log` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT,
    `branch_id` bigint(20) NOT NULL,
    `xid` varchar(100) NOT NULL,
    `context` varchar(128) 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`) USING BTREE,
    UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

Добавьте конфигурацию:

# конфигурация seata
seata:
  enable: true
  application-id: seata-admin-service
  tx-service-group: default_tx_group
  registry:
    type: nacos
    nacos:
      application: seata-server # имя сервиса seata
      # измените адрес для удаленного сервера
      server-addr: ${NACOS-HOST:tansci-nacos}:${NACOS-PORT:8848}
      group: SEATA_GROUP
  config:
    type: nacos
    nacos:
      # адрес nacos
      server-addr: ${NACOS-HOST:tansci-nacos}:${NACOS-PORT:8848}
      group: SEATA_GROUP
      data-id: "seataServer.properties"

API документация

API документация доступна по адресу http://ip-шлюза:порт-шлюза/doc.html

Пример: http://127.0.0.1:9001/doc.html

Аутентификация

- Метод запроса: POST
- Параметры запроса:
```json
{
  "username": "admin",
  "password": "admin123"
}
  • Возвращаемые параметры:
{
  "code": 200,
  "fail": false,
  "message": "Операция выполнена успешно",
  "result": {
    "loginTime": "2022-02-16 11:58:29",
    "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzdWJqZWN0IiwiZXhwIjoxNjQ0OTkxMTA4LCJwYXlsb2FkIjoie1wiYWNjb3VudE5vbkV4cGlyZWRcIjp0cnVlLFwiYWNjb3VudE5vbkxvY2tlZFwiOnRydWUsXCJhdXRob3JpdGllc1wiOlt7XCJhdXRob3JpdHlcIjpcIlJPTEVfTUVSQ0hBTlRTXCJ9XSxcImNyZWRlbnRpYWxzTm9uRXhwaXJlZFwiOnRydWUsXCJlbmFibGVkXCI6dHJ1ZSxcImlkXCI6XCJiYzNhYzI2ZTY5NzMxYjYxN2ViODAyNzQ0NTNmNmRiYVwiLFwicGFzc3dvcmRcIjpcIiQyYSQxMCR0bFdXZmpUT2JxTHNDNk9OcmhOTFwvLkdJcEFvRnUyMDVUWFBLNnhVUEhIcjFrQVwvcGFLNGxxXCIsXCJ1c2VybmFtZVwiOlwiYWRtaW5cIn0ifQ.8fXiQqlP9SLJK-_sPxws98VrUbDs5kvFysPmn3-Aqu8",
    "username": "admin"
  },
  "success": true
}
  • Установка заголовков
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzdWJqZWN0IiwiZXhwIjoxNjQ0ODk4NjY0LCJwYXlsb2FkIjoie1wiYWNjb3VudE5vbkV4cGlyZWRcIjp0cnVlLFwiYWNjb3VudE5vbkxvY2tlZFwiOnRydWUsXCJhdXRob3JpdGllc1wiOlt7XCJhdXRob3JpdHlcIjpcIlJPTEVfTUVSQ0hBTlRTXCJ9XSxcImNyZWRlbnRpYWxzTm9uRXhwaXJlZFwiOnRydWUsXCJlbmFibGVkXCI6dHJ1ZSxcImlkXCI6XCJiYzNhYzI2ZTY5NzMxYjYxN2ViODAyNzQ0NTNmNmRiYVwiLFwicGFzc3dvcmRcIjpcIiQyYSQxMCR0bFdXZmpUT2JxTHNDNk9OcmhOTFwvLkdJcEFvRnUyMDVUWFBLNnhVUEhIcjFrQVwvcGFLNGxxXCIsXCJ1c2VybmFtZVwiOlwiYWRtaW5cIn0ifQ.54GyxZs77ADpE_KYzdy8EAPOLYWL4AqcJDQId_SYCok

Связаться с автором- QQ: 742354529

Официальный WeChat-аккаунт

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/typ1805-tansci-cloud.git
git@api.gitlife.ru:oschina-mirror/typ1805-tansci-cloud.git
oschina-mirror
typ1805-tansci-cloud
typ1805-tansci-cloud
master