SpringCloud 01 分布式系统
分布式系统
分布式系统是由多个节点组成的系统,节点通过网络通信。对外作为整体提供服务。
分布式系统解决单体服务的问题:
- 互联网时代,用户数据量暴增。单体系统处理能力有限,升级单机性能成本高。
- 通过冗余配置实现高可用。
- 软件规模太大,团队人员太多,流程太长,降低开发,编译,测试,发布效率。
- 单体服务语言和生态单一。
CAP理论
对于一个分布式系统,三点只能满足两点。
Consistency:一致性。强一致性,如果写操作返回成功,之后所有读都必须得到最新结果。
Availability:可用性。每一个请求在有限时间内返回业务结果。
Partition Tolerance:分区容错性。网络断开导致分布式系统分区,仍能对外提供服务。
分布式系统不可能选择CA,因为现实世界无法保证网络永远可靠,节点不会宕机。因此只能在CP,AP中选。
BASE理论
BASE指Basically Available、Soft-state 和 Eventually Consistent。它基于AP。放弃强一致性,但是可以使系统达到最终一致性,系统分区故障恢复后,在一定时间内达到最终一致性。
Basically Available:基本可用。故障时可以让部分非核心功能不可用,可以让响应时间延长。但是系统整体仍可对外服务。
Soft-state:软状态。允许数据不一致,经过一定时间后,最终一致。