网站开发实战asp制作视频教程,驻马店市做网站,重庆蜡像制作,做的视频发到哪个网站目录 前言步骤引入相关maven依赖添加相关配置Client端配置注册中心Server端配置注册中心Seata-Server相关配置启动seata-server 使用方法Seata AT 模式整体机制 步骤初始化表结构标记注解GlobalTransactional 总结 前言
在数字化转型的浪潮下#xff0c;企业业务系统的复杂度… 目录 前言步骤引入相关maven依赖添加相关配置Client端配置注册中心Server端配置注册中心Seata-Server相关配置启动seata-server 使用方法Seata AT 模式整体机制 步骤初始化表结构标记注解GlobalTransactional 总结 前言
在数字化转型的浪潮下企业业务系统的复杂度日益增长微服务架构以其高度的模块化、可伸缩性和独立性逐渐成为构建现代复杂应用的首选。然而随着服务的拆分和细化分布式事务问题也愈发凸显成为制约微服务架构发展的一个重要瓶颈。 SeataSimple Extensible Autonomous Transaction Architecture是一个开源的分布式事务解决方案致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata通过全局事务ID将多个分支事务进行关联并使用TCTransaction Coordinator进行全局事务的控制和协调确保在分布式环境下的数据一致性和完整性。 将Seata集成到微服务架构中可以带来诸多优势。首先它解决了微服务间的数据一致性问题保证了在分布式环境下事务的原子性、一致性、隔离性和持久性。其次Seata提供了灵活的事务模式支持多种事务类型如AT模式基于补偿的分布式事务模式、TCC模式基于Try-Confirm-Cancel的分布式事务模式和Saga模式长事务模式可以根据不同的业务场景选择合适的模式。此外Seata还提供了友好的集成方式可以轻松地与主流的微服务框架和数据库进行集成降低了开发和维护的复杂度。 然而微服务集成Seata也面临着一些挑战。首先需要深入理解Seata的工作原理和事务模型以便正确地使用它来解决分布式事务问题。其次在集成过程中可能需要对现有的业务代码进行改造和适配以符合Seata的要求。最后还需要对Seata的性能和稳定性进行充分的测试和验证以确保其在实际生产环境中的可靠性。
步骤
引入相关maven依赖
!-- Seata --
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId
/dependency添加相关配置
Client端配置注册中心
seata:registry:type: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8848group: DEFAULT_GROUPnamespace: devusername: nacospassword: nacoscontext-path: tx-service-group: default_tx_groupservice:vgroup-mapping:default_tx_group: defaultServer端配置注册中心
seata:config:type: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8848group: DEFAULT_GROUPnamespace: devusername: nacospassword: nacosSeata-Server相关配置
# Copyright 1999-2019 Seata.io Group.
#
# Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.server:port: 17091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstashconsole:user:username: seatapassword: seataseata:config:# support: nacos, consul, apollo, zk, etcd3type: nacosnacos:server-addr: 127.0.0.1:8848namespace: devgroup: DEFAULT_GROUPusername: nacospassword: nacoscontext-path:##if use MSE Nacos with auth, mutex with username/password attribute#access-key:#secret-key:data-id: seataServer.propertiesregistry:# support: nacos, eureka, redis, zk, consul, etcd3, sofatype: nacosnacos:application: seata-serverserver-addr: 10.0.8.10:8848group: DEFAULT_GROUPnamespace: devusername: nacospassword: nacoscluster: defaultcontext-path:##if use MSE Nacos with auth, mutex with username/password attribute#access-key:#secret-key:store:# support: file 、 db 、 redismode: file
# server:
# service-port: 8091 #If not configured, the default is ${server.port} 1000security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login启动seata-server
docker run --name seata-server-demo -p 8091:8091 -p 7091:7091 -e SEATA_IP127.0.0.1 -e SEATA_PORT8091 -v /opt/project/seata-demo/config/resources:/seata-server/resources -v /opt/project/seata-demo/sessionStore:/seata-server/sessionStore -d seataio/seata-server:1.6.1启动完成后Server端的服务出现在 Nacos 控制台中的注册中心列表中
使用方法
Seata AT 模式
AT 模式是 Seata 创新的一种非侵入式的分布式事务解决方案Seata 在内部做了对数据库操作的代理层我们使用 Seata AT 模式时实际上用的是 Seata 自带的数据源代理 DataSourceProxySeata 在这层代理中加入了很多逻辑比如插入回滚 undo_log 日志检查全局锁等。
整体机制
两阶段提交协议的演变
一阶段业务数据和回滚日志记录在同一个本地事务中提交释放本地锁和连接资源。二阶段 提交异步化非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿。
步骤
初始化表结构
create table undo_log
(branch_id bigint not null comment branch transaction id,xid varchar(128) not null comment global transaction id,context varchar(128) not null comment undo_log context,such as serialization,rollback_info longblob not null comment rollback info,log_status int not null comment 0:normal status,1:defense status,log_created datetime(6) not null comment create datetime,log_modified datetime(6) not null comment modify datetime,constraint ux_undo_logunique (xid, branch_id)
)comment AT transaction mode undo table row_format DYNAMIC;create index ix_log_createdon undo_log (log_created);
标记注解GlobalTransactional
在需要事务的接口上标记seata提供的事务注解GlobalTransactional这样事务就生效了。
总结
完成上述步骤我们就完成了seata的集成。