一、分布式事务的应用场景

现在提起分布式事务中的“事务”,和传统的数据库事务中的“事务”严格意义上已经不是完全等同的了。

设计一个分布式事务框架前,首先要明确问题到定义。

分析具体应用场景,包括以下三个:A、服务内跨数据库的事务;B、跨内部服务的事务;C、跨外部服务的事务。

其中划分内部和外部的标准是:内部服务我们可以控制其实现,修改配置或代码;外部服务指的是第三方的,只能约定通信的方式和具体协议,具体代码实现在控制范围之外。

具体如下:

应用场景A:服务内跨数据库

如下图所示,在同一个服务方法内,访问两个或两个以上数据库。

我们知道,Java事务是通过Connection对象控制的。不同的数据库,是不同的数据库链接,通过不同的Connection对象实现。传统数据库事务无法实现事务控制,需要引入事务协调者的概念。这是场景A,这个场景中分布式体现在数据库的部署上。

应用场景B:跨内部服务

如下图所示,一个服务通过微服务框架或者RPC调用调用其他的服务,多个子服务需要同时成功或失败。每个子服务都有自己的持久化方式,不一定是数据库,体现事务的持久性。每个子服务部署在不同的服务容器中,不同的服务容器部署在不同的服务器节点上。这是场景B,这个场景中分布式体现在服务(或应用)的部署上。

这时候,事务的概念已经超出“数据库”的范畴了。

应用场景C:跨外部服务

这个场景是在应用场景B的基础上,进一步,服务的具体实现在我们控制范围之外。我们不能限制其实现语言,不能要求指定方法上加标注(注解)。甚至除了服务调用的网络通道外,我们不能期望服务间访问相同的Zookeeper作为事务协调器。这是场景C,这个场景中,我们只能在通信协议层面做约定,是最彻底的分布式场景。

小结

以上分析了分布式事务的三个应用场景,具体的技术方案也针对这三个场景做设计。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,452评论 10 200
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,404评论 19 139
  • 从网上买回来了个柜子,要自己安装,我特别相信自己能把它安装好,自己动手,丰衣足食吧!所以开始不其厌烦的安装,每安装...
    绿塬阅读 1,469评论 0 0
  • 没钱了,没钱了,我感到十分的没有安全感。 由于家庭状况发生了改变,老公的生意关门了,对于一直依靠老公的我来说内心是...
    Sunny萍阅读 1,072评论 0 1
  • 孩子进入了青春期后,父母发现孩子变得叛逆了起来,这让父母十分担心,也让整个家庭失去了欢声笑语,孩子的青春期对孩子的...
    苏苏华阅读 1,729评论 0 0