分布式系统的特点
随着移动互联网的快速发展,互联网的用户数量越来越多,产生的数据规模也越来越大。
对应用系统提出了更高的要求,我们的系统必须支持高并发访问和海量数据处理
分布式系统技术就是用来解决集中式架构的性能瓶颈问题
分布式系统的核心是可扩展性
通过对服务,存储的扩展,来提高系统的处理能力
通过对多台服务器协同工作,来完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务
单点故障(Single Point Failure)
是指在系统中某个组件一旦失效,这会让整个系统无法工作,而不出现单点故障,单点不影响整体就是分布式系统的设计目标之一。
无状态
是因为无状态的服务才能满足部分机器宕机不影响全部,可以随时进行扩展的需求
CAP 代表什么含义
20230724193213.jpg-
一致性(Consistency)
所有的节点同时看到相同的数据
即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,等同于所有节点拥有数据的最新版本。
一致性被称为原子对象,任何的读写都应该看起来是“原子”的,或串行的
写后面的读一定能读到前面写的内容,所有的读写请求都好像被全局排序 -
可用性(Availability)
任何时候,读写都是成功的
即服务一直可用,而且是正常响应时间
比如系统稳定性已经做到3个9,4个9,即99.9%,99.99%
这里的 N 个 9 就是对可用性的一个描述,叫做 SLA,即服务水平协议
对任何非失败节点都应该在有限时间内给出请求的回应(请求的可终止性) -
分区容忍性(Partition Tolerance)
当部分节点出现消息丢失或者分区故障时,分布式系仍然能够继续运行
即系统容忍网络出现分区
且在遇到某节点或网络分区之间网络不可达的情况下
仍然能够对外提供一致性和可用性的服务
允许节点之间丢失任意多的消息,当网络分区发生时,节点之间的消息可能会完全丢失
CAP 理论提醒我们,在架构设计中,不要把精力浪费在如何设计满足三者的完美分布式系统上,而要合理进行取舍。
CP 和 AP 架构的取舍
-
CP 架构:放弃可用性,追求一致性和分区容错性
ZooKeeper 就是采用了 CP 一致性
ZooKeeper 是一个分布式的服务器框架,主要用来解决分布式集群中应用系统的协调和一致性问题 -
AP 架构:放弃强一致性,追求分区容错和可用性
EureKa 是 Spring Cloud 微服务技术栈中的服务发现组件
Eureka 的各个节点都是平等的,几个节点挂掉不影响正常节点的工作
剩余的节点依然可以提供注册和查询服务,只要有一台 Eureka 还在,就能保证注册服务可用
只不过查到的信息可能不是最新的版本,不保证一致性
网友评论