分布式系统
什么是分布式系统
- 一个系统各组件分别部署在不同服务器上,彼此通过网络通信和协调的系统。
- 表现形式:
- 可以指多个不同组件分布在网络上互相协作,比如电商网站
- 也可以一个组件的多个副本组成集群,互相协作如同一个组件,比如数据存储服务中为了数据不丢失而采取多个服务备份冗余,当数据修改时也需要通信来复制数据。
- 解决单点问题,避免单点故障,然后解决性能问题。
CAP原则
在设计一个分布式项目的时候会遇到三个特性:一致性(Consistency)、可用性(Availability)、分区容错性(Partition-tolerance)
CAP定律说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种特性无法同时得到满足,最多满足两个
- 分区容错性(Partition-tolerance):分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供服务
- 天然就拥有分区容错性
- 分区容错性是分布式系统最基本的一个特性,也是必须的特性
- 一致性(Consistency):更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。
- 可用性(Availability):服务一直可用,而且是正常响应时间。(追求性能)
BASE理论
BASE(Basically Availabl、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性,也可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。
- Basically Available(基本可用)
- 基本可用本质是一种妥协,也就是出现节点故障或者系统过载时,通过牺牲非核心功能的可用性,保障核心功能的稳定运行。
- 实现基本可用的几个策略:
- 流量削峰(不同地区售票时间错峰出售):以订票系统为例,在春运期间,开始售票前后会出现海量的请求峰值,可以在不同的时间,出售不同地区的票,将访问请求错开,削弱请求峰值
- 延迟响应,异步处理(买票排队,基于队列先收到用户买票请求,排队异步处理,延迟响应):用户提交购票请求后,往往会在队列中排队等待处理,可能几分钟或十几分钟后,系统才开始处理,然后响应处理结果。
- 体验降级(看到非实时的数据,采用缓存数据提供服务):以互联网系统为例,若出现网络热点事件,产生了海量的突发流量,系统过载,大量图片因为网络超时无法显示,那么可以使用小图片代替原始图片,降低图片的清晰度和大小,提升系统处理能力。
- Soft state(软状态)
- 原子性(硬状态):要求多个节点的数据副本都是一致的,这是一种硬状态
- 软状态(若状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,既允许系统在多个不同节点的数据副本存在数据延迟
- Eventually consistency(最终一致性)
- 上面说软状态,不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性。从而达到了数据的最终一致性,这个时间期限取决于网络延时,系统负载,数据复制方案设计等等因素。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)