当前位置: 首页 > news >正文

分布式系统的设计哲学:架构模式全面介绍与选型策略

分布式

Distributed Systems / 分布式架构

1. 基本概念

  • 分布式系统:多个独立的计算实体(进程/节点/服务)通过网络协作完成任务。没有单一的全局共享内存或全局时钟
  • 特征:
    • 节点并发执行
    • 网络通信(延迟、丢包、分区)
    • 部分失败(节点或网络中部分失败而不是全部失败)
    • 可扩展性(水平扩展)
    • 复杂性(并发一致性、协调、监控更难)

2. 核心难点

  1. 网络分区和CAP定理:
    • CAP:Consistency(一致性)/Availability(可用性)/Partition tolerance(分区容忍性)三选两(实际:网络分区不可避免,所以系统设计中常在一致性和可用性间权衡)。
  2. 一致性模型
    • 强一致性(每次读到的都是最新写)
    • 最终一致性(写后最终会被所有节点看到)
    • 线性化、顺序一致性、因果一致性等(逐步放松强一致性以换取性能与可用性)
  3. 分布式事务与补偿(事务一致性)
    • 两段式提交(2PC):强一致但阻塞,扩展性差
    • Saga模式:把事务拆成一系列局部事务+补偿动作,适用与微服务的最终一致性
  4. 故障处理
    • 重试与幂等(保证重试不会重复副作用)
    • 超时和断路器(避免级联失败)
    • 指数退避
  5. 数据分片与复制
    • 分片(Sharding)用于扩展写/存储
    • 副本用于提升可用性和读吞吐(主从、主主)
    • 一致性协议(Paxos/Raft)用于分布式一致性与laeder选举
  6. 时序与一致性问题
    • 没有全局时钟:用逻辑时钟(Lamport)或物理时钟 + 容错策略
  7. 监控与可观测性
    • 日志/指标/分布式追踪(Trace)是必须的:便于定位跨服务调用链问题

3. 常用组件 / 技术栈(概念层面)

  • 通信协议:HTTP/REST, gRPC(Protobuf), AMQP/Kafka(消息队列)

  • 服务治理:服务注册与发现(Eureka/Consul)、配置中心(Nacos/Config Server)

  • 负载均衡:硬件 LB / 软件 LB / DNS / client-side lb

  • 弹性设计:断路器(Resilience4j)、限流、熔断、降级、重试

  • 数据层:主从复制、分片、分布式事务(2PC/SAGA)

  • Observability:Prometheus + Grafana、OpenTelemetry/Zipkin/Jaeger

4. 常见设计模式与实践

幂等性:PUT/DELETE 等请求设计为幂等,或通过幂等 key(idempotencyKey)保证一次性写入。

缓存策略:Cache Aside(应用主动读缓存/缺失时回 DB)、Write-Through、Write-Behind。注意缓存一致性/失效。

异步化 & 消息化:用消息队列(Rabbit/Kafka)解耦、缓冲,削峰填谷,异步重试。

服务拆分:微服务 → 单职能服务,按业务边界划分;要考虑跨服务事务问题。

数据复制与备份:冷备/热备、备份策略、灾难恢复(RPO/RTO)

ID 生成:UUID、数据库自增、Snowflake(分布式时间戳+序列)——权衡有序性、冲突、查询效率

5. 分布式主要用在哪些方面

  1. 分布式存储
    • 数据太大,一台机器的磁盘放不下,就进行分片(sharding)存到多台机器
    • 举例:HDFS、MongoDB分片、MySQL分库分表
  2. 分布式计算
    • 计算量太大,一台机器算不完,就拆分成任务分给不同机器同时算
    • 举例:MapReduce、Spark
  3. 分布式消息 / 事件
    • 系统之间靠消息来通信,消息可能要跨很多节点传递
    • 举例:Kafka、RabbitMQ
  4. 分布式协调
    • 多个节点要达成一致(谁是主节点、数据版本是不是一样)
    • 举例:Zookeeper、Etcd、Raft协议
  5. 分布式事务
    • 多台机器一起完成一笔事务(比如支付系统:扣钱、库存、订单必须一起成功 / 失败)
    • 技术:2PC、Saga、TCC
  6. 分布式服务治理
    • 微服务架构下,成百上千个服务怎么互相发现、调用、负载均衡
    • 举例:Eureka、Nacos、Consl

6. 其他模式

  • 单体式(Monolithic):
    • 传统做法:整个应用(前端、后端、数据库)都打包在一起运行
    • 好处:简单、开发快
    • 坏处:大了以后难以扩展,改一点地方可能全系影响
  • 集中式(Centralized):
    • 一切逻辑、数据都在一台中心机上,其他只是终端
    • 举例:早期的大型机 / 银行核心机房
    • 和分布式的区别是:集群更强调“多台机器做一样的事”,分布式更强调“不同机器分工协作”
  • 微服务式(Microservices)
    • 把应用拆成很多小服务,每一个服务独立部署、运行,通过API / 消息通信
    • 微服务往往跑早分布式环境里
  • 对等式(2P2,Peer-to-Peer)
    • 没有中心,大家都是“平等节点”
    • 举例:BT下载、区块链

文章转载自:

http://XDMTntsc.pttrs.cn
http://giNEg29S.pttrs.cn
http://cZxju7sG.pttrs.cn
http://iLbYkayf.pttrs.cn
http://R6tEsVsi.pttrs.cn
http://eqo5zvXB.pttrs.cn
http://wj3zGU8N.pttrs.cn
http://YIQo0ZRf.pttrs.cn
http://Venm5qEJ.pttrs.cn
http://7PceqHrX.pttrs.cn
http://7rI3vsUr.pttrs.cn
http://EQdjZaKN.pttrs.cn
http://D18ewuaP.pttrs.cn
http://DnUkDxLh.pttrs.cn
http://yvVEWz1T.pttrs.cn
http://zXdvVsHP.pttrs.cn
http://dBva7WkO.pttrs.cn
http://2lqATgDG.pttrs.cn
http://XfL80lhc.pttrs.cn
http://3B9DN0z6.pttrs.cn
http://VxanWiFQ.pttrs.cn
http://9QB19msg.pttrs.cn
http://3L9K1cwU.pttrs.cn
http://ga1roexs.pttrs.cn
http://sFKVu8dh.pttrs.cn
http://yypYyydZ.pttrs.cn
http://SnQijDdh.pttrs.cn
http://BBTsPBh4.pttrs.cn
http://2578cTWu.pttrs.cn
http://Js6dUEvQ.pttrs.cn
http://www.dtcms.com/a/370181.html

相关文章:

  • windows11 安装charm成功
  • IPD流程落地:IPMT的开发评审逻辑
  • 数字化赋能全球扩张:名创优品携手巨益科技的信息化转型深度实践
  • OpenCV - 图像的IO操作
  • Windows 11 手动下载安装配置 uv、配置国内源
  • Wisdom SSH 是一款搭载强大 AI 助手的工具,能显著简化服务器配置管理流程。
  • Linux基础知识(二)
  • Redis 在互联网高并发场景下的应用--个人总结
  • 算法题-链表03
  • 版本发布流程手册:Release分支规范与Bug分级标准全解析
  • 目标检测中的池化层
  • react native 出现 FATAL EXCEPTION: OkHttp Dispatcher
  • HttpClient、OkHttp 和 WebClient
  • js逆向Webpack模块加载机制解析:从数组到JSONP
  • cuda-NCCL笔记(1)-- 初步了解使用NCCL
  • Lua 面向对象编程
  • 微信小程序(uniapp)实现连接蓝牙
  • 从 scheduler_tick 到上下文切换:深入解析 Linux 内核的 TIF_NEED_RESCHED 标志设置流程
  • 微前端框架性能对比与选型指南:从理论到实践
  • pyAutoGUI 模块主要功能介绍-(1)鼠标功能
  • Maven的介绍及基本使用
  • 使用 C# .NETCore 实现MongoDB
  • 2025年渗透测试面试题总结-55(题目+回答)
  • %前置模糊查询优化
  • 【架构艺术】变更风险防控架构嵌入决策降噪模块的方法
  • ElmentUI之DateTimePicker 日期时间选择器
  • RabbitMQ 入门与 Go 语言实践
  • [Upscayl图像增强] Electron主进程命令 | 进程间通信IPC
  • 80(HTTP默认端口)和8080端口(备用HTTP端口)区别
  • AI模型测评平台工程化实战十二讲(第一讲:从手工测试到系统化的觉醒)