1.集中式
集中式系统指的是一台或者多台服务器组成中心节点,数据集中存储在这个中心结点,同时,系统的所有业务都在这个中心结点来集中的处理。集中式系统存在部署简单,但是不友好,无须考虑考虑对对个服务如何多节点的协作,也不需要考虑多节点之间的分布式事务问题。集中式系统存在的问题:
- 大型机价格昂贵,经济成本高。
- 大型机运维人才培养成本高,需要运维人员掌握其技术细节。
- 集中式有明显的单点问题(简而言之,就是这台大型机宕机了,服务就不可用了,这个后果相当严重)。
- 大型机可扩展性差,难以横向扩展
2.分布式
分布式系统,就是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。它的优点就是解决了集中式的上述缺点,它经济与运维成本更低,不存在明显的单点问题(如果系统设计合理的话),且更容易进行横向扩展。但没有银弹,分布式环境也存在种种问题。
- 通信异常: 由于网络的不可靠性,分布式环境下各节点之间每次进行网络通信,都会伴随着网络不可用的风险。就算顺利得完成了一次网路通信,其延时也会远大于单机操作。
- 网络分区:当网络发生异常情况,导致分布式系统中部分节点之间的网络延时越来越大,最终导致组成分布式系统的所有节点,只有部分节点之间能够进行正常通信,而另一些节点则不能。我们把这种情况称为网络分区,俗称“脑裂”
- 节点故障:有很多个节点,每个节点都有可能出现故障,单点的故障有可能引起整个系统的故障。
3.分布式事务
数据库的事物是ACID(原子性、一致性、隔离性、持久性),在操作系统中如果严格遵守ACID,可能会出现系统的可用性和严格一致性的冲突,因此需要权衡利弊,兼顾这两个性质,提出分布式系统的事务CAP和BASE。
CAP:
- C(Consistency)指的依旧是一致性,指数据在多个副本之间是否能保持一致的特性。如果针对一个数据项的更新操作执行成功之后,所有用户都可以读取到其最新的值,那么这样的系统就被称为强一致性(严格一致性)。
- A(Availability)指的是可用性,指系统提供的服务必须一直处于可用状态,对于用户的每一个操作请求总是能够在有限时间内返回结果。
- P(Partition tolerance)分区容错性,分布式系统在遇到任何网络分区故障时,仍需要能够保证对外提供满足一致性和可用性的服务。
BASE:
- BA指的是系统出现不可预知的故障时,允许损失“部分”可用性,但这绝不等于不可用。比如响应时间上的损失或者请求高峰期部分用户被引导到降级页面。
- S指的是系统允许不同副本之间的同步存在延时,但不会影响系统的整体可用性。
- E指系统经过一段时间的同步,最终能够到达一个一致性状态,而不用保证数据的实时一致性(强一致性)。