Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки.
Ссылка на эту статью:Гу Депэн.GitHub.IO/note/2019/1…
демонстрационный пример:GitHub.com/Гу Депэн/…
1. Клиент
1. Ведущий пакет
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2. Напишите класс конфигурации
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
@Primary
@Bean("dataSource")
public DataSourceProxy dataSource(DataSource druidDataSource) {
return new DataSourceProxy(druidDataSource);
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSourceProxy dataSourceProxy) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSourceProxy);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:/mapper/*.xml"));
return factoryBean.getObject();
}
}
3. Изменить класс запуска
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
4. Добавьте аннотации к методам, которым нужно открывать распределенные вещи
@GlobalTransactional
2. Сервер
1. Скачать сеата-сервер
[seata-server]{GitHub.com/цвет ах/цвет ах…}
2. Измените файл конфигурации (в этой статье в качестве примера используется nacos, а запись хранилища — mysql)
Измените реестр.conf в conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
serverAddr = "localhost"
namespace = "piblic"
cluster = "default"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "localhost"
#namespace为空,否则后面会报找不到store.db.driver-class-name找不到
namespace = ""
}
}
Измените тип в реестре на nacos и настройте serverAddr nacos для обслуживания вашего адреса nacos без http и номера порта. По умолчанию он будет подключаться к вашему порту 8858. Если вам нужно изменить порт, измените порт в файле nacos-config.sh.
Скопируйте реестр.conf на каждый ресурс, используя сервис Seata.
Измените nacos-config.txt в conf
store.mode=db
store.db.datasource=dbcp
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql
Измените store.mode на db и измените соответствующий файл конфигурации db на свой собственный mysql. Изменить service.vgroup_mapping.my_test_tx_group=свойство по умолчанию После версии 0.9.0.1: my_test_tx_group изменено на собственное имя службы (spring.application.name)+"-seata-service-group" До версии 0.9.0.1: my_test_tx_group изменяется на собственное имя службы (spring.application.name)+"-fescar-service-group" Это можно увидеть в GlobalTransactionAutoConfiguration в рамках проекта spring-cloud-alibaba-seata.
Сколько сервисов нужно использовать, чтобы добавить, сколько service.vgroup_mapping
Выполнить nacos-config.shNacos-Server-IP — это IP-адрес вашей службы nacos), первый шаг — обновить конфигурацию в nacos-config.txt до nacos.Если nacos-config.txt повторно изменен, выполните команду еще раз. Или войдите в интерфейс управления nacos, чтобы изменить его напрямую.
После добавления, удаления и изменения сервисов вы можете внести соответствующие изменения в конфигурацию nacos.
3. Создайте таблицу
Выполните оператор создания таблицы в базе данных store.db.url на предыдущем шаге (db_store.sql в conf)
Выполните оператор создания таблицы (db_undo_log.sql в conf) в каждой бизнес-базе данных.