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.