1. 分布式与集群的区别:
分布式是把一个业务拆分成多个子业务,然后各个子业务部署在不同的服务器上。而集群是同一个业务部署多个服务器上。
2. 分布式环境遇到的问题
1)通信异常
分布式环境中,各个组件在不同的服务器上,因此必然引入网络,而网络肯定存在不可靠性,因此会给分布式系统带来消息延迟,甚至消息丢失的情况。
2)网络分区
当网络由于发送异常时,将导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能——网络分区(脑裂)
3)三态
分布式系统的每一次请求与响应,存在“三态”,即成功、失败和超时
4)节点故障
节点出现宕机或“僵死”现象。分布式环境下,节点故障具有独立性
3. CAP/BASE 理论
分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。通常一个分布式事务中会涉及对多个数据源或业务系统的操作。
一个分布式事务可以看作是多个分布式的操作序列组成的,通常把这一系列分布式的操作序列称为子事务。
3.1 cap 理论
cap 理论告诉我们,一个分布式系统不可能同时满足一致性(C:consistency)、可用性(A:availability)和分区容错性(P:partition tolerance)。
- 一致性
数据是否能够在多个副本之间保持一致的特性。 - 可用性
系统提供的服务一直处于可用的状态。 - 分区容错性
分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。
3.2 BASE 理论
BASE 是指 Basically availability(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)。
最终一致性存在以下主要五种:
- 因果一致性(causal consistency)
- 读己之所写
- 会话一致性
- 单调读一致性
一个进程从系统中读取出一个数据项的某个值后,那么系统对于该进程后续的任何数据访问都不应该返回旧值
- 单调写一致性
一个系统需要能够保证来自同一个进程的写操作被顺序执行