1.分布式服务的发展概况
CAP
首先了解下分布式服务的基本概念-CAP, CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得
- 一致性: 更新操作成功并返回客户端完成后,分布式的所有节点在同一时间的数据完全一致,本文讲的分布式系统事务一致性就是典型的一致性问题
- 可用性:读和写操作都能成功
- 分区容错性:出现网络故障导致分布式节点间不能通信时,系统能否继续服务
BASE理论
在分布式系统中,我们往往追求的是可用性,它的重要程序比一致性要高,那么如何实现高可用性呢? 前人已经给我们提出来了另外一个理论,就是BASE理论,它是用来对CAP定理进行进一步扩充的。BASE理论指的是:
-
Basically Available(基本可用)
-
Soft state(软状态)
-
Eventually consistent(最终一致性)
BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性
2.分布式事务产生的原因
业务发展初期,基本上所有的业务都耦合在一个大应用中,能满足业务的CRUD,可是当流量上来之后,业务迅速发展,如果继续在一个"大而臃肿"的应用中编写代码,将会有以下缺点:
- 编译部署困难:网站业务负责,规模庞大,对于开发人员来说打包将会很痛苦,mvn clean install之后,抽了根烟,喝了点咖啡过会满心欢喜回来看结果,结果还在building...,好不容易结束了,一看失败,结果还得重新执行。
- 代码分支管理困难:公司业务线如果分出来后,如果还继续复用一个项目,代码merge很容易发生冲突,又不了解其他业务线的业务,merge后问题纠缠在一起,经常拖到凌晨才发布。
- 重构困难: