【分布式架构】学习路径概述:了解分布式系统的核心问题、解决方案与实战说明

文章目录

  • 零、前言
  • 一、分布式系统理论
    • 1、 分布式系统的一致性问题
      • 1.1、一致性问题理论(CAP/BASE)
      • 1.2、 一致性协议与算法(Paxos/Raft):选主、分布式锁
      • 1.3、 分布式事务(2PC\3PC\TCC):服务一致性保障与性能
    • 2、分布式系统通讯
    • 3、 分布式存储(数据分片/副本机制/一致性哈希/读写分离):高可用与存储拓展
    • 4、 分布式计算与任务调度:大规模计算、资源分配与负载均衡
    • 5、分布式系统的可观测性理论:请求的链路追踪
  • 二、系统设计与架构能力实战
    • 1、系统设计
    • 2、技术选型与集群估算
    • 3、 相关面试题
      • 3.1、概念类
      • 3.2、 实际应用
  • 三、工程实践经验
    • 1. 分布式系统实践
      • 大数据相关
      • 其他分布式系统实践
    • 2、分布式系统性能优化
    • 3、分布式系统故障排查
  • 四、分布式系统治理能力(了解)

零、前言

“分布式系统设计”的核心是:既能从理论上解释“为什么”,又能从工程上实现“怎么做”,还能在出现问题时快速定位“如何修”
 

就目前工作来说,分布式理论能够帮助我在使用分布式组件(大数据组件:Hadoop、Flink、Spark、StarRocks;Weaviate向量库等)遇到问题时,能够从底层的角度理解并解决问题,以及能够利用理论优化一些性能问题,基于开源分布式项目的BugFix与二开。

另外分布式理论是设计分布式架构的理论基础,但是道阻且长,分布式架构的设计工作(角色限制)很少涉及,目前先通过系统设计学习设计思路,以及总结工作中遇到实际分布式问题慢慢攀登分布式架构这座大山。

 

我们先通过以下两篇文章,简单了解分布式架构的演进与分布式架构要处理的问题及解决方案,然后我们通过学习分布式理论,系统设计,工作常涉及到的内容(选型、架构评估、性能优化、监控),以及总结工作中遇到的分布式问题,来推动分布式架构的掌握进程。

【分布式架构设计理论1】架构设计的演进过程

随着业务的扩大,用户量的增多,计算量的增大,以及软件复杂度的提高,软件架构从单体、前后端分分离(分层架构?),加缓存(突破数据库IO性能),负载均衡(性能保证,故障转移),读写分离(释放读性能),分库分表(突破单表单服务器存储),微服务(服务治理)等不同方面,来解决由软件架构在演进过程中的问题。

【分布式架构理论2】分布式架构要处理的问题及解决方案

 

一、分布式系统理论

分布式有哪些问题,
分布式理论能够使用,

分布式系统理论的作用在于为系统设计、架构选型、故障分析和性能优化提供科学的原理依据和分析工具。它让你能够理解分布式环境下的本质约束,明确各种技术方案的优缺点和适用场景,从而做出更合理的技术决策。理论还帮助你在遇到复杂问题时,快速定位根因并找到有效的解决思路。

1、 分布式系统的一致性问题

1.1、一致性问题理论(CAP/BASE)

理论内容: CAP(一致性、可用性、分区容错性,三者不可兼得);BASE(放弃强一致性,追求最终一致性,如电商订单状态同步)。

理论作用:

  • 基于业务进行架构选型:设计高可用系统时,必须在一致性和可用性之间做权衡。例如,金融转账系统更重视一致性,选择强一致性数据库;而社交点赞系统更重视可用性,允许短暂不一致。
  • 基于架构故障分析:当出现网络分区时,能快速判断系统是选择拒绝请求(保证一致性)还是返回旧数据(保证可用性),从而指导应急处理。

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

 

1.2、 一致性协议与算法(Paxos/Raft):选主、分布式锁

理论内容:在分布式环境下,如何让多个节点就某个值(选主、分布式锁)达成一致。

实际作用

  • 高可用服务设计:如分布式锁、主节点选举、配置中心等场景,采用Raft等算法保证只有一个主节点,避免“脑裂”。
  • 故障恢复分析:当主节点宕机时,能分析系统如何自动选举新主,保证服务不中断。

脑裂指主从节点因网络分区同时认为自己是主节点;解决方式:增加仲裁节点(如 ZooKeeper 投票)、设置最小存活节点数。

【分布式理论9】分布式协同:分布式锁理论基础:分布式互斥算法

【分布式理论10】分布式协同:分布式互斥算法最佳实现:分布式锁的原理与实现

【分布式理论12】事务协调者高可用:分布式选举算法

【分布式理论】读确认数与写确认数:分布式一致性的核心概念

【Weaviate底层机制】分布式一致性深度解析:Raft算法与最终一致性的协同设计

 

1.3、 分布式事务(2PC\3PC\TCC):服务一致性保障与性能

理论内容:在分布式系统中,如何保证跨服务、跨库操作的一致性。

2PC 分准备和提交阶段,协调者故障可能导致阻塞;3PC 增加超时机制,减少阻塞但复杂度更高。

 

实际作用

  • 方案选型:根据业务对一致性和性能的要求,选择2PC(强一致性但性能低)、TCC/Saga(最终一致性但高性能)等不同方案。
  • 问题定位:当出现数据不一致时,能用理论分析是哪个阶段(如补偿、回滚)出了问题,快速定位和修复。

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

 

2、分布式系统通讯

分布式系统通信通过RPC、消息队列、负载均衡等技术,实现了服务间的解耦协作,让各个服务能够独立开发部署;通过负载分散避免了单点压力,通过故障隔离防止了问题扩散;同时通过连接池复用、异步调用、批量处理等机制大幅提升了通信性能,通过重试、持久化、链路追踪等保障了通信可靠性,最终让整个分布式系统能够高效、稳定、可扩展地运行。

【分布式架构理论3】分布式调用(1):负载均衡

【分布式架构理论4】分布式调用(2):API 网关分析

【分布式理论五】分布式调用(3):服务注册与发现

【分布式理论六】分布式调用(4):服务间的远程调用(RPC)

【分布式理论8】分布式调用之:四种IO模型

 

3、 分布式存储(数据分片/副本机制/一致性哈希/读写分离):高可用与存储拓展

  1. 数据分片:让你能够突破单机存储容量限制,将海量数据分散到多个节点上。
    比如用户数据按用户ID分片,订单数据按时间分片,这样既能支撑TB级数据存储,又能实现水平扩展。当某个分片压力过大时,可以进一步拆分,当存储空间不足时,可以动态添加新节点。

  2. 副本机制:解决了数据可靠性和读取性能问题。
    通过多副本存储,即使某个节点故障,数据也不会丢失。同时,读请求可以分散到多个副本,大幅提升读取性能。

  3. 一致性哈希:解决了数据分布和故障转移问题。
    当节点增减时,只需要迁移少量数据,而不是重新分布所有数据,大大降低了系统开销。这在Redis集群、分布式缓存等场景中广泛应用。

  4. 读写分离:通过将读请求分散到多个副本,写请求集中到主节点,既保证了数据一致性,又提升了系统整体吞吐量。比如数据库主从架构、CDN加速等,都是读写分离的典型应用。

【分布式理论13】分布式存储:数据存储难题与解决之道

【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

【Weaviate底层】Weaviate写数据之两阶段提交:cannot reach enough replicas的判断

 

4、 分布式计算与任务调度:大规模计算、资源分配与负载均衡

  1. 分布式计算:能够处理单机无法完成的大规模计算任务。
    通过将计算任务分解到多个节点并行执行,大幅缩短处理时间。比如MapReduce处理PB级数据、Spark进行机器学习训练、Flink进行实时流计算等。

  2. 任务调度:解决了资源分配和负载均衡问题。
    通过智能调度算法,将任务合理分配到各个计算节点,避免某些节点过载而其他节点空闲。同时支持任务优先级、资源配额、故障重试等机制,确保重要任务优先执行,失败任务自动恢复。

  3. 实际应用场景: 大数据平台的ETL任务调度、机器学习训练任务分发、实时数据处理任务分配等,都需要分布式计算和任务调度能力来支撑大规模、高并发的计算需求。

【分布式理论15】分布式调度1:分布式资源调度的由来与过程

【分布式理论16】分布式调度2:资源划分和调度策略

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度

 

5、分布式系统的可观测性理论:请求的链路追踪

理论内容:如何在分布式环境下追踪请求流转、定位性能瓶颈。

实际作用

  • 监控体系设计:基于理论设计全链路追踪系统,快速定位跨服务调用的延迟和异常。
  • 性能优化:通过理论指导,分析调用链路,找出瓶颈节点,进行针对性优化。

 

二、系统设计与架构能力实战

1、系统设计

掌握 分层设计 思想:如接入层(负载均衡、API网关)、业务层(服务拆分、微服务治理)、数据层(分布式数据库、缓存、消息队列)的协同设计。

【系统设计【1】】系统设计面试方法论:从0到百万用户的需求到架构的推演

【系统设计【3】】系统设计面试框架:从理论到实践的完整指南

【系统设计【4】】设计一个限流器:从理论到实践的完整解决方案

【系统设计【5】】一致性哈希:从系统崩溃到优雅扩容的设计演进

【系统设计】系统设计中反复提到的30个核心概念

 

2、技术选型与集群估算

  1. 熟悉主流分布式组件的原理与适用场景,能根据需求选型并解释理由:
  • 缓存:Redis(集群模式、哨兵机制)、Memcached的对比与选型;
  • 消息队列:Kafka(高吞吐)、RabbitMQ(复杂路由)、RocketMQ(事务消息)的场景适配;
  • 分布式协调:ZooKeeper、etcd在服务发现、配置管理中的应用;
  1. 能清晰分析技术选型的成本、性能、复杂度权衡,例如:“为何在高频读场景选择Redis集群而非数据库主从?”

【系统设计【2】】粗略估算

 

3、 相关面试题

3.1、概念类

CAP定理相关
解释CAP定理的含义、为什么CAP三者不能同时满足?、在分布式系统中如何权衡CAP?

一致性模型
强一致性vs最终一致性的区别、如何实现最终一致性?、2PC、3PC、Paxos、Raft等一致性算法的原理

分布式事务
什么是分布式事务?、2PC和3PC的优缺点、如何解决分布式事务问题?

 

3.2、 实际应用

负载均衡
常见的负载均衡算法、一致性哈希的原理和应用、如何设计一个负载均衡器?

服务发现
什么是服务发现?、服务注册与发现的实现方式、ZooKeeper、Consul、Eureka等工具的比较

分布式锁
如何实现分布式锁?、Redis分布式锁的实现、Zookeeper分布式锁的实现

系统设计题
设计一个分布式缓存系统、设计一个消息队列系统、设计一个分布式计数器

案例分析
分析某个分布式系统的架构、讨论某个分布式系统的优缺点、如何优化现有的分布式系统?

 

 

三、工程实践经验

1. 分布式系统实践

大数据相关

Flink相关实践

  1. 流处理架构设计: 基于Flink构建实时数据处理平台,设计Source(如Kafka、MySQL Binlog)、Transform(如窗口计算、状态管理)、Sink(如StarRocks、Elasticsearch)的完整数据流。实现Exactly-Once语义,通过Checkpoint机制保证数据一致性,通过Savepoint实现版本升级和故障恢复。

  2. 状态管理与容错: 设计大规模状态存储方案,使用RocksDB作为状态后端,实现状态的分片存储和并行恢复。优化Checkpoint策略,平衡容错性和性能,通过异步Checkpoint减少对数据处理的阻塞。

  3. 资源调度与优化: 基于YARN或Kubernetes实现Flink集群的资源调度,优化TaskManager的内存配置、并行度设置、网络缓冲区大小。实现动态扩缩容,根据数据量变化自动调整资源分配。

 

其他分布式系统实践

  1. 分布式存储系统: 参与分布式文件系统(如HDFS)的核心模块开发,实现数据分片、副本管理、故障恢复机制。开发分布式KV存储(如Redis Cluster),设计一致性哈希算法、数据迁移策略、故障转移机制。

  2. 微服务架构落地: 主导微服务架构从0到1的拆分与落地,解决服务间通信(gRPC、HTTP)、服务注册发现(Nacos、Eureka)、配置中心(Apollo、Consul)、API网关等问题。实现服务治理,包括熔断降级、限流、负载均衡、链路追踪。

  3. 消息队列系统: 设计高吞吐量的消息队列系统,实现消息的持久化、分区、消费组管理。优化消息投递的可靠性,实现Exactly-Once语义,处理消息重复和丢失问题。

 

2、分布式系统性能优化

性能优化

  1. 缓存优化:
    设计多级缓存架构,包括本地缓存、分布式缓存、CDN。优化缓存策略,包括缓存预热、缓存更新、缓存穿透防护。分析缓存命中率,优化缓存大小和过期策略。
  2. 数据库优化:
    优化分布式数据库的查询性能,包括索引设计、分片策略、读写分离。分析慢查询,优化SQL语句、数据库配置、连接池设置。
  3. 异步处理优化:
    设计异步处理架构,通过消息队列解耦系统组件。优化消息处理性能,包括批量处理、并发消费。

 

容量规划与资源管理:

  1. 业务增长预测:
    根据业务指标(如用户数、订单量、数据量)预测系统瓶颈,提前进行扩容规划。分析历史数据,建立容量模型,预测CPU、内存、存储、网络的需求。
  2. 资源调度优化:
    优化Kubernetes或YARN的资源调度策略,实现智能的资源分配和回收。设计弹性扩缩容策略,根据负载变化自动调整资源分配。
  3. 成本优化:
    分析资源使用情况,优化资源利用率,降低运维成本。实现资源池化管理,提高资源复用率。

 

3、分布式系统故障排查

  • 能定位和解决分布式系统中的复杂问题,例如:
    • 分布式链路追踪(如Jaeger、Zipkin)排查跨服务调用的延迟瓶颈;
    • 通过日志分析(ELK栈)和监控告警(Prometheus+Grafana)定位数据不一致问题;
    • 优化分布式锁(如Redis分布式锁、ZooKeeper分布式锁)的性能与死锁风险。
  • 具备容量规划能力:能根据业务增长预测系统瓶颈,提前进行扩容(水平/垂直)、资源调度优化。

 

四、分布式系统治理能力(了解)

分布式系统治理能力,简单来说就是让复杂的分布式系统稳定、可靠运行的综合管理能力。这种能力主要体现在三个方面:

  1. 服务治理能力,就是让成百上千个微服务能够协同工作而不出乱子。包括服务注册发现、负载均衡、熔断降级、限流控制等基础机制,但更重要的是要能根据业务特点设计合适的治理策略。比如在电商大促时,如何通过智能限流既保证核心交易稳定,又能最大化利用系统资源。

  2. 稳定性保障能力,就是预见并防范各种故障。从单机故障到机房故障,从网络分区到数据不一致,都需要有相应的容错和恢复机制。多活架构、数据备份、故障演练等,都是为了提升系统的抗风险能力。真正的治理能力体现在能够设计出"故障自愈"的系统。

  3. 监控与可观测性能力,就是在分布式系统中快速定位和解决问题。涵盖系统层面(CPU、内存、网络)、应用层面(接口响应时间、错误率)、业务层面(订单量、支付成功率),并能通过监控数据预判风险。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90930.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 密封类_密封方法 (seadled 关键字)

C#允许将类声明为密封类,密封类不能被继承在什么场景用?答:防止重写某些类导致代码混乱密封类seadled 声明密封类的关键字//seadled 声明密封类的关键字 //密封类不能被继承 sealed class Class1 {public int age;public string name;publi…

深度学习(鱼书)day04--手写数字识别项目实战

深度学习(鱼书)day04–手写数字识别项目实战 鱼书的相关源代码下载: 点击链接:http://www.ituring.com.cn/book/1921 点击“随书下载” 第三项就是源代码: 解压后,在pycharm(或其它IDE&#…

【自用】NLP算法面经(6)

一、FlashAttention 1、Tile-Based计算 将q,k,v分块为小块,每次仅处理一小块: 利用gpu的片上SRAM完成QK^T和softmax避免中间结果写入HBM 标准attention的计算算法如下:标准attention实现大量中间结果需要频繁访问HBM,而HBM的访问速…

Vue页面卡顿优化:从理论到实战的全面解释

目录 1. 理解Vue页面卡顿的幕后黑手 1.1 响应式系统的“双刃剑” 1.2 虚拟DOM的“隐藏成本” 1.3 浏览器渲染的“性能陷阱” 实战案例:一个“罪魁祸首”的排查 2. 优化响应式系统:让数据“轻装上阵” 2.1 使用v-if和v-show控制渲染 2.2 冻结静态数据 2.3 精细化响应式…

从0开始学linux韦东山教程Linux驱动入门实验班(6)

本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。本人将前几章的内容大致学完之后,考虑到后续驱动方面得更多的开始实操,后续的内容将以韦东山教程Linux驱动入门实…

高性能反向代理与负载均衡 HAProxy 与 Nginx

在现代高并发 Web 架构中,HAProxy 和 Nginx 是两个非常重要的工具。它们在反向代理、负载均衡、SSL 终止、缓存、限流等方面发挥着关键作用。 一、HAProxy 与 Nginx 简介 1. HAProxy 简介 HAProxy(High Availability Proxy) 是一个使用 C …

AI安全“面壁计划”:我们如何对抗算法时代的“智子”封锁?

> 在算法窥视一切的今天,人类需要一场数字世界的“面壁计划” 2025年,某医院部署的AI分诊系统被发现存在严重偏见:当输入相同症状时,系统为白人患者分配急诊通道的概率是黑人患者的**1.7倍**。调查发现,训练数据中少数族裔样本不足**15%**,导致AI在“认知”上形成了结…

数据库数据恢复—报错“system01.dbf需要更多的恢复来保持一致性”的Oracle数据恢复案例

Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。Oracle数据库恢复流程: 1、…

Spring Cloud Gateway 服务网关

Spring Cloud Gateway是 Spring Cloud 生态系统中的一个 API 网关服务,用于替换由Zuul开发的网关服务,基于Spring 5.0Spring Boot 2.0WebFlux等技术开发,提供了网关的基本功能,例如安全、监控、埋点和限流等,旨在为微服…

[数据结构]#6 树

树是一种非线性的数据结构,它由节点组成,并且这些节点之间通过边连接。树的每个节点可以有一个或多个子节点,并且有一个特殊的节点叫做根节点(没有父节点)。树在计算机科学中应用广泛,尤其是在数据库索引、…

车辆网络安全规定之R155与ISO/SAE 21434

随着科技的不断进步,车辆已经从传统的机械装置演变为高度智能化的移动终端。现代汽车不仅配备了先进的驾驶辅助系统(ADAS)、车载信息娱乐系统(IVI),还具备联网功能,能够实现远程诊断、自动驾驶、…

Go语言实战案例-合并多个文本文件为一个

以下是《Go语言100个实战案例》中的 文件与IO操作篇 - 案例21:合并多个文本文件为一个 的完整内容,适用于初学者学习文件读取与写入的综合运用。🎯 案例目标使用 Go 语言将指定目录下的多个 .txt 文件,合并成一个新的总文件。&…

基坑渗压数据不准?选对渗压计能实现自动化精准监测吗?

一、渗压监测的背景 渗压计是一种专门用于测量构筑物内部孔隙水压力或渗透压力的传感器,适用于长期埋设在水工结构物或其它混凝土结构物及土体内,以测量结构物或土体内部的渗透(孔隙)水压力。 在水利工程中,大坝、水库…

Linux网络:阿里云轻量级应用服务器配置防火墙模板开放端口

1.问题介绍在使用Udp协议或其他协议进行两台主机或同一台主机通信时,常常会出现bind成功,但是在客户端向服务端发送数据后,服务端无响应的情况,如果使用轻量级应用服务器,大概率是服务器的端口因为防火墙未对公网IP开放…

《 Spring Boot整合多数据源:分库业务的标准做法》

🚀 Spring Boot整合多数据源:分库业务的标准做法 文章目录🚀 Spring Boot整合多数据源:分库业务的标准做法🔍 一、为什么需要多数据源支持?💡 典型业务场景⚙️ 二、多数据源集成方案对比&#…

前端ApplePay支付-H5全流程实战指南

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言近期公司开展关于苹果支付的相关业务,与之前不同的是,以前后台直接获取第三方Wallet封装好的接口获取支付地址,H5页面直接跳转使用Appl…

Flink窗口:解锁流计算的秘密武器

Flink 窗口初识在大数据的世界里,数据源源不断地产生,形成了所谓的 “无限数据流”。想象一下,网络流量监控中,每一秒都有海量的数据包在网络中穿梭,这些数据构成了一个无始无终的流。对于这样的无限数据流&#xff0c…

Java排序算法之<希尔排序>

目录 1、希尔排序介绍 1.1、定义 1.2、核心思想 2、希尔排序的流程 第 1 轮:gap 4 第 2 轮:gap 2 第 3 轮:gap 1 3、希尔排序的实现 4、时间复杂度分析 5、希尔排序的优缺点 6、适用场景 前言 希尔排序(Shell Sort&…

c++加载qml文件

这里展示了c加载qml文件的三种方式以及qml文件中根节点的访问准备在创建工程的初期,遇到了一个问题,cmake文件以前都是系统自动生成的,不需要我做过多的操作修改,但是,加载qml的程序主函数是需要用到QGuiApplication&a…

007TG洞察:GPT-5前瞻与AI时代竞争力构建:技术挑战与落地路径

最近,GPT-5 即将发布的消息刷爆了科技圈,更让人期待的是,GPT-6 已经悄悄启动训练了,OpenAI 的奥特曼表示对未来1-2年的模型充满信心,预测AI将进化为能够发现新知识的“AI科学家”。面对日益强大的通用AI,企…