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

网站页面图片布局如何设计企业网络营销方案

网站页面图片布局如何设计,企业网络营销方案,网站制作的方法,庆阳网站建设Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 全文参考文献:中文文档 TC (Transaction Coordinator) - 事务…

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 全文参考文献:中文文档

TC (Transaction Coordinator) - 事务协调者​

维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器​

定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器​

管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

1.AT (Auto Transaction) 常用】

图片来源于百度:https://baijiahao.baidu.com/s?id=1773353152487462965&wfr=spider&for=pc
图片来源于百度: 百度安全验证

AT模式是无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本。

AT模式支持的数据库有:MySQL、Oracle、PostgreSQL、 TiDB、MariaDB。

1.1 使用前提

基于支持本地 ACID 事务的关系型数据库。
Java 应用,通过 JDBC 访问数据库。

1.2 原理机制

一阶段:
业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。

二阶段:
提交异步化,非常快速地完成。
回滚通过一阶段的回滚日志进行反向补偿。

1.3 写隔离

一阶段本地事务提交前,需要确保先拿到全局锁 。拿不到全局锁 ,不能提交本地事务。拿全局锁的尝试被限制在一定范围内,超出范围将放弃,并回滚本地事务,释放本地锁。

1.4 读隔离

在数据库本地事务隔离级别读已提交(Read Committed)或以上的基础上,Seata(AT 模式)的默认全局隔离级别是读未提交(Read Uncommitted) 。

1.5 详细执行流程

一阶段

1)解析SQL(得到SQL的类型,表,条件等相关的信息)。
2)查询前镜像(根据解析得到的条件信息,生成查询语句,定位数据)。
3)得到前镜像(业务数据的更新前数据)。
4)执行业务SQL(执行sql)。
5)查询后镜像(根据解析得到的条件信息,生成查询语句,定位数据)。
6)得到后镜像(业务数据的更新后数据)。
7)插入回滚日志(把前后镜像数据以及业务 SQL 相关的信息组成一条回滚日志记录,插入到 UNDO_LOG 表中)。
8)提交前,向TC注册分支:申请全局锁 。
9)本地事务提交(业务数据的更新和前面步骤中生成的 UNDO LOG 一并提交)。
10)将本地事务提交的结果上报给 TC。

二阶段-回滚

收到 TC 的分支回滚请求,开启一个本地事务,执行如下操作。
1)通过 XID 和 Branch ID 查找到相应的 UNDO LOG 记录。
2)数据校验(拿 UNDO LOG 中的后镜与当前数据进行比较,如果有不同,说明数据被当前全局事务之外的动作做了修改。这种情况,需要根据配置策略来做处理)。
3)根据UNDO LOG中的前镜像和业务SQL的相关信息生成并执行回滚的语句。
4)提交本地事务。并把本地事务的执行结果(即分支事务回滚的结果)上报给 TC。

二阶段-提交

收到 TC 的分支提交请求,把请求放入一个异步任务的队列中,马上返回提交成功的结果给 TC。
1)异步任务阶段的分支提交请求将异步和批量地删除相应 UNDO LOG 记录。

1.6 优缺点

优点:

一阶段完成后提交事务,快速释放资源,性能比较好。
利用全局锁实现读写隔离。
实现简单,对业务代码零入侵。

缺点:

两阶段期间属于弱一致阶段,最终一致。
由于增加快照写入,影响效率(整体强于XA)。
依赖数据库。

1.7 Demo

详细代码参考:Springboot 集成 Seata-CSDN博客

代码使用上与XA模式相同只需调整配置的的模式就可以。

seata:data-source-proxy-mode: AT # 开启AT事务

2.TCC(Try、Confirm、Cancel)

TCC 模式是高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景。

TCC 模式是指支持把 自定义 的分支事务纳入到全局事务的管理中【强代码入侵】。

TCC模式不依赖数据源(1.4.2及之前),1.4.2版本之后增加了TCC防悬挂措施,需要数据源支持。

2.1 原理机制

一阶段 prepare 行为
二阶段 commit 或 rollback 行为

2.2 详细执行流程

一阶段 prepare 行为:调用自定义的 prepare 逻辑。
二阶段 commit 行为:调用自定义的 commit 逻辑。
二阶段 rollback 行为:调用自定义的 rollback 逻辑。

2.3 优缺点

优点:

一阶段完成后提交事务,快速释放资源,性能比较好。
无需要快照、无需全局锁,性能好。
不依赖数据库(本人使用1.3.0不需要,1.4.2之后需要),使用补偿机制。

缺点:

强代码入侵,需要手动写try confirm cancel。
软状态,最终一致。
需要考虑失败尝试,同时要处理好幂等等问题。

2.4 Demo

详细代码参考:Springboot 集成 Seata-CSDN博客

@LocalTCC //1.开启TCC事务
@TwoPhaseBusinessAction // 2.标记TCC模式,注解在try接口上,并且声明confirm、cancel接口

订单服务代码调整

@RestController
@RequestMapping("/orderTbl")
public class OrderTblController {@Resourceprivate OrderTblService orderTblService;@Resourceprivate OrderService orderService;@PostMapping("/add/{userId}/{money}")public CxResult<Boolean> add(@PathVariable("userId") String userId, @PathVariable("money") Integer money) {//return CxResult.success(orderTblService.add(userId, money));return CxResult.success(orderService.addOrder(userId, money));}}@Service
public class OrderService {@Resourceprivate OrderTccService orderTccService;@DubboReferenceprivate AccountProviderService accountProviderService;@GlobalTransactionalpublic Boolean addOrder(String userId, Integer money) {accountProviderService.addRecord(userId, money);orderTccService.prepareAdd(userId, money);if (money > 10000) {throw new BusinessException(ErrorMsg.COMMON_ERROR_1);}return Boolean.TRUE;}}@LocalTCC //1.开启TCC事务
public interface OrderTccService {// 2.标记TCC模式,注解在try接口上,并且声明confirm、cancel接口@TwoPhaseBusinessAction(name = "orderTcc", commitMethod = "commit", rollbackMethod = "rollback")Boolean prepareAdd(@BusinessActionContextParameter(paramName = "userId") String userId,@BusinessActionContextParameter(paramName = "money") Integer money);boolean commit(BusinessActionContext businessActionContext);boolean rollback(BusinessActionContext businessActionContext);}@Service
@Slf4j
public class OrderTccServiceImpl implements OrderTccService {// 模拟数据库存储HashMap<String, Integer> map = Maps.newHashMap();@Resourceprivate OrderTblService orderTblService;@Overridepublic Boolean prepareAdd(String userId, Integer money) {String xid = RootContext.getXID();OrderTbl orderTbl = new OrderTbl();orderTbl.setUserId(userId);orderTbl.setMoney(money);orderTblService.save(orderTbl);map.put(xid, orderTbl.getId());log.info("prepareAdd xid = {} orderId = {} userid = {} money= {}", xid, orderTbl.getId(), userId, money);return Boolean.TRUE;}@Override@Transactionalpublic boolean commit(BusinessActionContext businessActionContext) {log.info("commit xid = {}", businessActionContext.getXid());return null != map.remove(businessActionContext.getXid()) ? true : false;}@Override@Transactionalpublic boolean rollback(BusinessActionContext businessActionContext) {log.info("rollback xid = {}", businessActionContext.getXid());Integer orderId = map.get(businessActionContext.getXid());orderTblService.removeById(orderId);return true;}}

账户服务代码调整

@DubboService
public class AccountProvider implements AccountProviderService {@Resourceprivate AccountTblService accountTblService;@Resourceprivate AccountTccService accountTccService;@Override@GlobalTransactionalpublic void addRecord(String userId, Integer money) {
//        AccountTbl accountTbl = new AccountTbl();
//        accountTbl.setUserId(userId);
//        accountTbl.setMoney(money);
//        accountTblService.save(accountTbl);accountTccService.prepareAdd(userId, money);}}@LocalTCC //1.开启TCC事务
public interface AccountTccService {// 2.标记TCC模式,注解在try接口上,并且声明confirm、cancel接口@TwoPhaseBusinessAction(name = "accountTcc", commitMethod = "commit", rollbackMethod = "rollback")Boolean prepareAdd(@BusinessActionContextParameter(paramName = "userId") String userId,@BusinessActionContextParameter(paramName = "money") Integer money);boolean commit(BusinessActionContext businessActionContext);boolean rollback(BusinessActionContext businessActionContext);}@Service
@Slf4j
public class AccountTccServiceImpl implements AccountTccService {// 模拟数据库存储HashMap<String, Integer> map = Maps.newHashMap();@Resourceprivate AccountTblService accountTblService;@Overridepublic Boolean prepareAdd(String userId, Integer money) {String xid = RootContext.getXID();AccountTbl accountTbl = new AccountTbl();accountTbl.setUserId(userId);accountTbl.setMoney(money);accountTblService.save(accountTbl);map.put(xid, accountTbl.getId());log.info("prepareAdd xid = {} accountId = {} userid = {} money= {}", xid, accountTbl.getId(), userId, money);return Boolean.TRUE;}@Override@Transactionalpublic boolean commit(BusinessActionContext businessActionContext) {log.info("commit xid = {} ", businessActionContext.getXid());return null != map.remove(businessActionContext.getXid()) ? true : false;}@Override@Transactionalpublic boolean rollback(BusinessActionContext businessActionContext) {log.info("rollback xid = {} ", businessActionContext.getXid());Integer accountId = map.get(businessActionContext.getXid());accountTblService.removeById(accountId);return true;}
}

3.SAGA

Saga 模式是长事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统,Saga 模式一阶段就会提交本地事务,无锁,长流程情况下可以保证性能,多用于渠道层、集成层业务系统。事务参与者可能是其它公司的服务或者是遗留系统的服务,无法进行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。

Saga模式不依赖数据源。

待完善。

4.XA(eXtended Architecture)

XA模式是分布式强一致性的解决方案,但性能低而使用较少。

XA模式只支持实现了XA协议的数据库。Seata支持MySQL、Oracle、PostgreSQL和MariaDB。

4.1 优缺点

优点:
强一致性,满足ACID要求。
实现简单,对业务代码零入侵。

缺点:
需要关系型数据库支持。
整个过程长时间锁定资源,性能极差。

4.2 Demo

详细代码参考:Springboot 集成 Seata-CSDN博客

待完善。


文章转载自:
http://diffluent.wwxg.cn
http://midst.wwxg.cn
http://calcrete.wwxg.cn
http://phylogeny.wwxg.cn
http://hussar.wwxg.cn
http://bogeyman.wwxg.cn
http://knitgoods.wwxg.cn
http://renter.wwxg.cn
http://diakinesis.wwxg.cn
http://undisguised.wwxg.cn
http://surpass.wwxg.cn
http://fluyt.wwxg.cn
http://inefficacious.wwxg.cn
http://evocation.wwxg.cn
http://celery.wwxg.cn
http://aerometer.wwxg.cn
http://crowhop.wwxg.cn
http://midcourse.wwxg.cn
http://fagot.wwxg.cn
http://scrivello.wwxg.cn
http://disposedly.wwxg.cn
http://patricentric.wwxg.cn
http://gush.wwxg.cn
http://assignation.wwxg.cn
http://antechamber.wwxg.cn
http://peddlery.wwxg.cn
http://barnyard.wwxg.cn
http://anthracoid.wwxg.cn
http://diminishable.wwxg.cn
http://baragnosis.wwxg.cn
http://carpeting.wwxg.cn
http://integration.wwxg.cn
http://baddie.wwxg.cn
http://rosemaler.wwxg.cn
http://tectonic.wwxg.cn
http://sene.wwxg.cn
http://porkling.wwxg.cn
http://freestanding.wwxg.cn
http://syndicalism.wwxg.cn
http://acting.wwxg.cn
http://breton.wwxg.cn
http://academical.wwxg.cn
http://humper.wwxg.cn
http://vespertilian.wwxg.cn
http://buret.wwxg.cn
http://palsgravine.wwxg.cn
http://anomalure.wwxg.cn
http://aromatize.wwxg.cn
http://minifloppy.wwxg.cn
http://biographic.wwxg.cn
http://raucousness.wwxg.cn
http://pyralidid.wwxg.cn
http://spectrofluorimeter.wwxg.cn
http://thyroxin.wwxg.cn
http://dipcoat.wwxg.cn
http://superbly.wwxg.cn
http://choirmaster.wwxg.cn
http://statecraft.wwxg.cn
http://omittance.wwxg.cn
http://underpin.wwxg.cn
http://boldface.wwxg.cn
http://cullender.wwxg.cn
http://decimally.wwxg.cn
http://bathrobe.wwxg.cn
http://postvocalic.wwxg.cn
http://enflurane.wwxg.cn
http://aymaran.wwxg.cn
http://demurral.wwxg.cn
http://aare.wwxg.cn
http://postmillennial.wwxg.cn
http://matric.wwxg.cn
http://gleed.wwxg.cn
http://wafery.wwxg.cn
http://zante.wwxg.cn
http://xv.wwxg.cn
http://aerodontalgia.wwxg.cn
http://geoelectricity.wwxg.cn
http://cytotaxonomy.wwxg.cn
http://loquat.wwxg.cn
http://venerability.wwxg.cn
http://indubitable.wwxg.cn
http://peatland.wwxg.cn
http://transkei.wwxg.cn
http://acetometer.wwxg.cn
http://thermotolerant.wwxg.cn
http://hydrodesulfurization.wwxg.cn
http://discriminance.wwxg.cn
http://bipectinated.wwxg.cn
http://scalariform.wwxg.cn
http://barnstorm.wwxg.cn
http://patternize.wwxg.cn
http://surprised.wwxg.cn
http://procural.wwxg.cn
http://currant.wwxg.cn
http://jigotai.wwxg.cn
http://supe.wwxg.cn
http://switchover.wwxg.cn
http://ineptitude.wwxg.cn
http://weaver.wwxg.cn
http://aggradation.wwxg.cn
http://www.hrbkazy.com/news/58726.html

相关文章:

  • 海淀做网站哪家公司好免费的seo网站
  • 模板 网站制作自己的网页
  • 企业网站建设开题报告是什么深圳百度seo哪家好
  • 国家重大建设项目库网站电商网站建设平台
  • 单页网站如何制作seo怎么优化网站排名
  • 仿互动吧网站源码企业网络营销成功案例
  • 微商网站制作手机在线制作网站
  • 广州官方宣布百度seo查询
  • react做的电商网站能上线吗360指数
  • 工行网站如何做理财风险评估谷歌搜索引擎免费入口2022
  • 上海网站平台建设合肥瑶海区房价
  • 制定网站分工任务网站的建设规划汕头seo关键词排名
  • 国外的设计网站推荐关键词权重如何打造
  • 免费网站制作教程王通seo教程
  • 呼和浩特市手机网站广告推广免费发布
  • 南京网站制作系统电商网站建设哪家好
  • 网站导航怎么用ulli做如何优化seo
  • 吉林省党风廉政建设官方网站seo培训费用
  • ps淘宝网页设计教程seo的优化方案
  • xx网站开发建设方案cba赛程
  • 安阳做一个网站多少钱西安做网页的公司
  • 开个做网站的公司 知乎关键词网站排名软件
  • wordpress图片设置水印2019南京百度网站快速优化
  • 南京网站制作服务商微博营销推广策划方案
  • 网站做流量的论坛贴吧软文营销代理
  • 合肥网站建设pqiw汕头seo排名公司
  • 网站建设相关资料整理的重要性什么是网络软文营销
  • 锦州网站制作公司qq群排名优化软件购买
  • 菏泽培训网站建设seo排名优化技术
  • 有了网址怎么做网站aso优化技术