首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式事务

分布式事务:

事务的英文解释:a business deal or action, such as buying or selling something 交易 业务 买卖

事务的4个特性:原子性,隔离性,一致性,持久性;

单个节点的单个数据库的事务是容易控制的,但是当流程复杂时,涉及多个小的流程操作,这些小的流程操作分布在不同的节点,用不同的数据库;确保这个大流程执行成功的唯一条件就是小流程全部执行成功,否者就失败,同时要确保这些不同节点的数据库中数据正确(也即 一致性);

复杂的大流程进行事务控制的思路 :‘两阶段提交’

消息事务+最终一致性

所谓消息事务即是基于消息中间件的的两阶段提交,本质上是对消息中间件的特殊利用,它是把本地事务和发送消息放到一个事务中,保证本地事务成功和发送消息成功就都成功,否则就都失败。

基于消息中间件的两阶段提交往往用在高并发场景下,将一个分布式事务拆成一个消息事务(A系统的本地操作+发消息)+B系统的本地操作,其中B系统的操作由消息驱动,只要消息事务成功,那么A操作一定成功,消息也一定发出来了,这时候B会收到消息去执行本地操作,如果本地操作失败,消息会重投,直到B操作成功,这样就变相地实现了A与B的分布式事务。原理如下:

虽然上面的方案能够完成A和B的操作,但是A和B并不是严格一致的,而是最终一致的,我们在这里牺牲了一致性,换来了性能的大幅度提升。当然,这种玩法也是有风险的,如果B一直执行不成功,那么一致性会被破坏,具体要不要玩,还是得看业务能够承担多少风险。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G05B8400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券