Steata分散トランザクションの使用

Steata分散トランザクションの使用シナリオは、並行性の量がそれほど大きくないバックエンド管理システムです。
Steate紹介し、公式ウェブサイトを使用しています:http://seata.io/zh-cn/docs/overview/what-is-seata.html
私たちがここで使う分散トランザクションソリューションは、2PCモードでATモード、である
私たちが使用するにはバージョン0.7.1です。バージョンが異なれば、使用方法も異なる場合があります。

  • Seataは分散トランザクションを制御したい

  • 1)すべてのmicroserviceデータベースはuodo_logテーブルを作成する必要があります
    - 0.7.1+がフィールドコンテキストが追加されます
    TABLE、CREATE undo_log
    idBIGINT(20)NOT NULL AUTO_INCREMENTを、
    branch_idBIGINT(20)NOT NULL、
    xidVARCHAR(100)NOT NULL、
    contextVARCHAR(128) NOT NULL、
    rollback_infolongblob NOT NULL、
    log_statusint(11)NOT NULL、
    log_createddatetime NOT NULL、
    log_modifieddatetime NOT NULL、
    PRIMARY KEY(id)、
    UNIQUE KEY ux_undo_logxidbranch_id
    )ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
    ここに画像の説明を挿入

  • 2)トランザクションコーディネーターseata-server https://github.com/seata.seata/releasesregistry.conf
    ここに画像の説明を挿入
    レジストリ構成変更レジストリtype = nacosをインストールすると、アドレスがnacosの接続アドレスに変更されます。
    ここに画像の説明を挿入
    その後、サービスを開始します

  • 3)統合
    1.インポートの依存関係spring-cloud-starter-alibaba-seata @ seata-all-0.7.1

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
  • 3.分散トランザクションを使用するすべてのマイクロサービスはseataDataSourceProxyを使用します
@Configuration
public class MySeataConfig {
    
    

    @Autowired
    DataSourceProperties dataSourceProperties;

    @Bean
    public DataSource dataSource(DataSourceProperties dataSourceProperties) {
    
    
        HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
        if (StringUtils.hasText(dataSourceProperties.getName())) {
    
    
            dataSource.setPoolName(dataSourceProperties.getName());
        }
        return new DataSourceProxy(dataSource);
    }
}

  • 4.サービスごとに
    registry.confをインポートします。file.conffile.conf
    ここに画像の説明を挿入
    のservice.vgroup_mapping構成は、spring.application.nameと一致するように
    設定する必要があります。vgroup_mapping.gulimall-order-fescar-service-group= "default"、またはspring.cloud.alibaba.seata.tx-service-groupを構成してサフィックスを変更しますが、file.confの構成と一致している必要があります
    ここに画像の説明を挿入
  • 5.大きなトランザクション:@GlobalTransactional
  • 6.リモートスモールトランザクション:@Transactional
    @Transactionalの入り口で使用されますが、トランザクションを開くための他のリモート呼び出しはローカルトランザクション@Transactionalです。
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/u014496893/article/details/114238773