分布式面临的一些问题

分布式环境的特点

  • 分布性 服务并不在一起
  • 并发性 多个服务同时访问同一个资源(数据库、缓存)
  • 无序性 因网络问题服务之间的通信顺序不一致

分布式环境下面临的问题

网路通信 网络本身的不可靠性,因此会涉及到一些网络通信问题
网络分区 当网络发生异常导致分布式系统中部分节点之间的网络延迟不断增大,最终导致组成分布式框架的所有结点,只有部分能够正常通信,如脑裂
三态 在分布式架构里面,除了成功、失败,还有超时
分布式事务
ACID(原子性、一致性、隔离性、持久性)

中心化和去中心化

中心化冷备或者热备
当集群节点发生故障时自动选取新的master

经典的CAP/BASE理论

CAP

C(一致性 Consistency):所有节点上的数据,时刻保持一致
A(可用性 Availability):每个请求都能够收到一个响应,无论响应成功或者失败
P(分区容错 Partition-tolerance):表示系统出现脑裂以后,可能导致某些server与集群中的其他机器失去联系
一般只能保证CP / AP
CAP理论仅适用于原子读写的Nosql场景,不适用于数据库系统

BASE

基于CAP理论,CAP理论并不适用于数据库事务(因为更新一些错误的数据而导致数据出现紊乱,无论什么样的数据库高可用方案都是徒劳),虽然XA事务虽然可以保证数据库在分布式系统下的ACID特性,但是会带来性能方面的影响

eBay尝试了一种完全不同的套路,放宽了对事务ACID的要求。提出了BASE理论(数据的最终一致性)

  • Basically available:数据库分片模式,把100W的用户数据分布在5个实例上,如果破坏其中一个实例,仍然可以保证80%的用户可用
  • soft-state:软状态,在基于client-server模式的系统中,server端是否有状态,决定了系统是否具备良好的水平扩展、负载均衡、故障恢复等特性。
    server端承诺会维护client端状态数据,这个状态仅仅维持一小段时间,这段时间以后,server端就会丢弃这个状态,恢复正常
  • Eventually consistent:数据的最终一致性

你可能感兴趣的:(分布式面临的一些问题)