Configuration de Seata avec Docker pour les Transactions Distribuées en Microservices

Pour implémenter Seata dans une architecture microservices, suivez ces étapes pour l'installation et la configuration via Docker.

Téléchargement de l'image Seata

docker pull seata/seata-server:1.5.2

Préparation des répertoires de configuration

sudo mkdir -p /opt/seata/conf

Extraction temporaire des fichiers de configuration

Démarrez un conteneur temporaire pour copier les fichiers de configuration vers l'hôte.

docker run -d --name seata-temp seata/seata-server:1.5.2
docker cp seata-temp:/seata-server/resources/. /opt/seata/conf/
docker stop seata-temp && docker rm seata-temp

Configuration de Nacos comme centre de configuraton

Créez un fichier de configuration nommé seata-config.properties dans Nacos avec les paramètres suivants. Ajustez les valeurs selon votre environnement, en particulier les connexions à la base de données et le mode de stockage.

# Paramètres de transport
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
# Autres paramètres de transport...

# Configuration des règles de transaction
service.vgroupMapping.my_tx_group=default
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false

# Configuration des règles pour le client
client.rm.lock.retryInterval=15
client.rm.lock.retryTimes=25
client.tm.commitRetryCount=4
client.tm.rollbackRetryCount=4

# Stockage transactionnel
store.mode=db
store.lock.mode=db
store.session.mode=db
store.publicKey=123456
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.1.100:3306/seata_db?useSSL=false
store.db.user=admin
store.db.password=secret
store.db.minConn=5
store.db.maxConn=30
# Autres paramètres de stockage...

Démarrage du conteneur Seata en production

Lancez le conteneur Seata avec les variables d'environnement appropriées et le montage des fichiers de configuration.

docker run -d --name seata-service \
  -p 8091:8091 \
  -p 7091:7091 \
  -e SEATA_IP=192.168.1.50 \
  -e STORE_MODE=db \
  -v /opt/seata/conf/application.yml:/seata-server/resources/application.yml \
  seata/seata-server:1.5.2

Fichier application.yml pour Seata

Créez le fichier application.yml dans /opt/seata/conf/ avec le contenu ci-dessous. Modifeiz les adresses IP pour correspondre à votre instance Nacos.

server:
  port: 7091

spring:
  application:
    name: seata-server

seata:
  config:
    type: nacos
    nacos:
      server-addr: 192.168.1.50:8848
      group: SEATA_GROUP
      data-id: seata-config.properties
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 192.168.1.50:8848
      group: SEATA_GROUP
      cluster: default
  store:
    mode: db

Intégration dans les projets clients

Ajoutez la dépendance Maven suivante à vos projets microservices :

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
  <version>2021.0.1.0</version>
</dependency>

Dans les fichiers de configuration des clients (application.yml), incluez les paramètres Seata pour connnecter le service :

seata:
  enabled: true
  application-id: ${spring.application.name}
  service:
    vgroup-mapping:
      my_tx_group: default
  config:
    type: nacos
    nacos:
      server-addr: 192.168.1.50:8848
      group: SEATA_GROUP
      data-id: seata-config.properties
  registry:
    type: nacos
    nacos:
      server-addr: 192.168.1.50:8848
      application: seata-server
      group: SEATA_GROUP

Pour déclarer une transaction distribuée, appliquez l'annotation @GlobalTransactional sur les méthodes requises dans votre code.

Étiquettes: Docker Seata Nacos transactions-distribuées architecture-microservices

Publié le 3 juillet à 05h55