当前位置: 首页 > news >正文

摄影培训网站建设百度推广电话是多少

摄影培训网站建设,百度推广电话是多少,做网站和做app哪个难,网站搭建分站需要多少钱介绍Seata 是阿里巴巴开源的分布式事务中间件,一种分布式事务解决方案,具有高性能和易于使用的微服务架构。初衷对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入高性能:减少分布式事务解决方案所带来…

介绍

Seata 是阿里巴巴开源的分布式事务中间件,一种分布式事务解决方案,具有高性能和易于使用的微服务架构。

初衷

  • 对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入
  • 高性能:减少分布式事务解决方案所带来的性能消耗

分布式事务定义

分布式事务是一个全局事务,由一批分支事务组成,通常分支事务只是本地事务。

44bc1d9c2fd73e35e7ca47ac10c32c64.png

设计

Seata中有两种分布式事务实现方案,AT和TCC。

AT

AT模式是基于XA事务演进而来,核心是对业务无侵入,是一种改进后的两阶段提交,需要数据库支持。

7419e92d224c0045ac8999e939c01691.png

基本组件:

  • 事务协调器(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。
  • Transaction Manager(TM): 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
  • 资源管理器(RM):控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。

处理流程:

  1. TM要求TC开始新的全局事务。TC生成表示全局事务的XID。
  2. XID通过微服务的调用链传播。
  3. RM将本地事务注册为XID到TC的相应全局事务的分支。
  4. TM要求TC提交或回滚XID的相应全局事务。
  5. TC在XID的相应全局事务下驱动所有分支事务以完成分支提交或回滚。

9550d6d7d88309284705d2413960e022.png

TCC

Seata要求每个接口实现prepare、commit、rollback。

与 AT 模式一样,在运行时,该切面会拦截所有对 TCC 接口的调用。每调用一次 Try 接口,切面会先向 TC 注册一个分支事务,然后才去执行原来的 RPC 调用。当请求链路调用完成后,TC 通过分支事务的资源 ID 回调到正确的参与者去执行对应 TCC 资源的 Confirm 或 Cancel 方法。

  1. 初步操作 Try:完成所有业务检查,预留必须的业务资源。
  2. 确认操作 Confirm:真正执行的业务逻辑,不做任何业务检查,只使用 Try 阶段预留的业务资源。因此,只要 Try 操作成功,Confirm 必须能成功。另外,Confirm 操作需满足幂等性,保证一笔分布式事务能且只能成功一次。
  3. 取消操作 Cancel:释放 Try 阶段预留的业务资源。同样的,Cancel 操作也需要满足幂等性。

Seata Server安装

1.下载最新版本的 Seata Sever

https://github.com/seata/seata/releases

2. 解压并启动 Seata server

unzip seata-server-xxx.zip
cd distribution
sh ./bin/seata-server.sh 8091 file

示例

场景:

把数据库zeroa中proxy表的一条数据转移到数据库zerob中proxy表里面。

模块:

zero-discovery-server:注册中心

zero-gateway-server:服务网关

zero-consumer:服务消费者

zero-provider-a:服务提供者A

zero-provider-b:服务提供者B

架构及版本:

Spring-cloud:Finchley.BUILD-SNAPSHOT

spring-cloud-starter-netflix-eureka-server:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-netflix-eureka-client:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-gateway:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-openfeign:2.0.0.RELEASE

spring-boot:2.0.0.RELEASE

spring-boot-starter-data-jpa:2.0.0.RELEASE

spring-cloud-alibaba-seata:0.9.1.BUILD-SNAPSHOT

seata-all:0.6.1

mysql-connector-java:8.0.11

druid-spring-boot-starter:1.1.18

mysql:5.7

seata-server-0.6.1

实现:

zero-gateway-server

  • 配置application.yml

a65c7200513da52d2ec9bd1fe516741a.png

zero-provider-a:

  • 配置application.yml

3580168a56897be5b8338e499870ea9b.png
  • File.conf

主要配置应用名称和seata server地址

vgroup_mapping.${spring.application.name}-fescar-service-group="default"

default.grouplist = "127.0.0.1:8091"

6d29199fd48ad1b3a6367fccbc61ebcd.png
  • Registry.conf

d9dbe9fd03977185cf65b41abc980eb7.png
  • 编写Entity

ae528fae75b456577a33fedb0db875b2.png
  • 编写Repository

f9d09e586cea1cb3726a61f9384a06e7.png
  • 编写Service

f5d38a9d3eba045d71c92628e2aa00e0.png
  • 编写代码Controller

a69e993734cd0b04e61d431636b14845.png
  • DataSource

358b16d2420a0df6954b49ccb7a9d2b3.png

zero-provider-b

配置同zero-provider-a工程,编写相应的业务逻辑。

在处理添加业务时,抛出异常。

7acec3374a47676df00b75bb7037e7f6.png

zero-consumer

配置同zero-provider-a工程,编写相应的业务逻辑。

  • feignClient

d53f1030e84ed2b532501a2920fffe2b.png
  • feignclient

e5f12bfc734c46c60c6fb66b675a0ff0.png
  • Service

0469e5c85db8ab9a2b1eed19a90ec9fc.png
  • Controller

0d2d292f90ceb9d5097de3ddb280d3c9.png

测试

启动Seata Server

启动Mysql,并初始化(每个库都要创建undo_log表)

DROP SCHEMA IF EXISTS zeroa;CREATE SCHEMA zeroa;USE zeroa;CREATE TABLE `undo_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`branch_id` bigint(20) NOT NULL,`xid` varchar(100) NOT NULL,`context` varchar(128) NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int(11) NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,`ext` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;DROP SCHEMA IF EXISTS zerob;CREATE SCHEMA zerob;USE zerob;CREATE TABLE `undo_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`branch_id` bigint(20) NOT NULL,`xid` varchar(100) NOT NULL,`context` varchar(128) NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int(11) NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,`ext` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

启动

zero-discovery-server

zero-gateway-server

zero-provider-a

zero-provider-b

zero-consumer

添加数据

8ae1f22c9475a4d270ad698b2884320a.png

正常执行事务

6c4fab6731306df0d90bc81bd62dee8d.png

可在两张表中查看数据(a库中删除id=2的数据,b库中添加了一条数据)。

执行事务回滚

f7738993a635df45ae47288af0a5a7f0.png

查看数据库数据(没有变化)。

http://www.lbrq.cn/news/2456767.html

相关文章:

  • 第一个做装修的网站网络营销有哪些就业岗位
  • 美食网站怎么做美国seo薪酬
  • 十堰seo优化服务长沙关键词优化推荐
  • 湖南网站制作公司乐天seo视频教程
  • j2ee做网站2023年国家免费技能培训
  • 唐卡装饰集团 一站式超级体验店西安关键词优化软件
  • 东川网站制作怎样在百度上发表文章
  • 品牌策划网站建设旺道seo网站优化大师
  • 织梦网站地图生成网络推广员工作内容
  • 网页视频加速器优化软件
  • 网站建设费用报价单淘宝seo搜索引擎优化
  • 广州高端模板网站查询网站流量
  • 威客网站开发需求国外网站seo免费
  • 阿里云网站备案核验单舆情报告范文
  • 网站建设工具品牌有合肥网络推广平台
  • 红酒公司网站建设模板6841百度高级搜索首页
  • 做网站还能挣钱吗网络销售平台上市公司有哪些
  • 崇信县门户网站首页欧洲网站服务器
  • 麻将网站开发公司品牌策划公司排行榜
  • 17网站一起做网店 睡衣百度seo排名培训
  • 公司网站建设优帮云企业培训员工培训平台
  • 九江网站建设排行榜网络运营推广具体做什么工作
  • 静态网站怎么做优化深圳网络营销平台
  • 外贸网站建设制作google下载手机版
  • 廊坊那家做网站排行榜seo文章优化方法
  • 能否提供代码 网站建设产品推广的渠道有哪些
  • 合肥网站设计建设爱网站查询挖掘工具
  • 诸城做网站收费贵州二级站seo整站优化排名
  • 商会 网站模板优化营商环境心得体会
  • 做网站用什么数据库百度指数功能模块有哪些
  • SEC_FirePower 第二天作业
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • OSPF路由协议单区域
  • 面试题(技术面+hr面)
  • CSS 基础
  • 《从C风格到C++风格:内存管理的进化之路》