# sssss **Repository Path**: chijianan/sssss ## Basic Information - **Project Name**: sssss - **Description**: 这是一个测试 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-03 - **Last Updated**: 2026-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 分布式系统开发全介绍 ## 目录 1. [什么是分布式系统](#1-什么是分布式系统) 2. [分布式出现的背景与优势](#2-分布式出现的背景与优势) 3. [分布式核心技术难点](#3-分布式核心技术难点) 4. [分布式关键理论](#4-分布式关键理论) 5. [常用中间件与组件](#5-常用中间件与组件) 6. [主流架构模式](#6-主流架构模式) 7. [分布式开发常用技术栈](#7-分布式开发常用技术栈) 8. [分布式系统落地开发流程](#8-分布式系统落地开发流程) 9. [典型应用场景](#9-典型应用场景) 10. [学习路线建议](#10-学习路线建议) ## 1. 什么是分布式系统 > **定义**:一个由多台**独立物理机器/节点**通过网络互联组成的系统,节点之间协作配合对外提供统一服务,用户感知不到底层多机器拆分。 简单理解:把原本单机完成的计算、存储、业务,拆分到多台服务器协同完成。 - 节点:独立服务器、容器、云主机; - 通信:依托TCP/IP、RPC、HTTP等网络协议交互; - 对外表现:整体是一套系统。 ### 与单体系统区别 - **单体**:所有代码、数据库部署在一台服务器,架构简单,扩容困难; - **分布式**:服务拆分、多机器部署,横向扩容容易,架构复杂度更高。 ## 2. 分布式出现的背景与优势 ### 2.1 诞生背景 1. 业务数据量、并发量暴涨,**单机CPU、内存、磁盘性能存在物理上限**,无法承载海量请求; 2. 互联网业务7×24高可用需求,单点服务器故障会导致全系统宕机; 3. 资源成本:高端大型机价格昂贵,多台普通廉价服务器组成集群性价比更高。 ### 2.2 核心优势 1. **横向扩容**:流量暴涨时新增机器即可扩容,不用升级单机硬件; 2. **高可用**:单点故障不影响整体服务,故障节点自动剔除; 3. **容错性**:数据多副本存储,硬件损坏不丢失数据; 4. **业务解耦**:按业务拆分服务,不同团队独立开发迭代; 5. **异地部署**:多地域机房部署,就近接入降低访问延迟。 ## 3. 分布式核心技术难点 分布式本质问题:**网络不可靠 + 多节点状态不一致**,衍生四大经典难题: ### 3.1 网络问题 - 网络延迟、丢包、分区、抖动、节点宕机; - 调用超时导致重复请求、状态未知。 ### 3.2 分布式事务(数据一致性) 跨库/跨服务操作,无法像单机本地事务轻松保证ACID,需要额外方案保证数据统一。 ### 3.3 分布式锁 多节点并发修改共享资源,单机锁失效,需要分布式锁控制并发。 ### 3.4 全局唯一ID 多节点生成主键,自增ID冲突,需要分布式ID生成方案。 ### 3.5 负载均衡 & 服务雪崩 流量不均匀导致部分节点过载,一个服务故障链式拖垮全链路(雪崩)。 ## 4. 分布式关键理论 ### 4.1 CAP定理 任何分布式系统无法同时满足: - **C一致性(Consistency)**:所有节点数据实时一致; - **A可用性(Availability)**:故障后仍能正常对外服务; - **P分区容错(Partition Tolerance)**:网络分裂后系统继续运行; > 实际开发:P无法避免,只能在CA之间二选一:CP架构/AP架构。 ### 4.2 BASE理论(互联网主流) 基于CAP衍生,柔性事务准则: - **BA基本可用(Basically Available)**:故障保证核心功能可用,非核心降级; - **S软状态(Soft State)**:节点数据允许中间临时不一致; - **E最终一致性(Eventually Consistent)**:一段时间后所有数据自动达成一致; > 大部分互联网业务(电商、支付、IM)采用BASE。 ### 4.3 一致性算法 - **Paxos**:经典强一致算法,实现复杂; - **Raft**:简化版Paxos,主流(etcd、Consul基于Raft); - **ZAB**:Zookeeper自研一致性协议。 ## 5. 常用中间件与组件 | 分类 | 主流产品 | 用途 | | ---- | ---- | ---- | | 注册配置中心 | Nacos、Eureka、Consul、Zookeeper | 服务注册发现、配置统一管理 | | RPC框架 | Dubbo、gRPC、SpringCloud OpenFeign | 跨服务远程调用 | | 消息队列 | RocketMQ、Kafka、RabbitMQ | 异步解耦、削峰填谷、最终一致性 | | 分布式缓存 | Redis Cluster | 热点数据缓存、分布式锁、分布式ID | | 分布式数据库 | MySQL分库分表(Sharding-JDBC)、TiDB | 海量数据存储,解决单机DB瓶颈 | | 分布式协调 | Zookeeper、etcd | 选主、配置同步、分布式协调 | | 网关 | Spring Cloud Gateway、Nginx | 路由转发、限流、鉴权、负载均衡 | | 分布式事务 | Seata | AT/TCC/SAGA模式实现跨服务事务 | ## 6. 主流架构模式 ### 6.1 微服务架构(最常用) 按业务领域拆分独立服务:订单服务、商品服务、用户服务,独立部署、独立数据库,通过RPC/HTTP通信,SpringCloud/Dubbo生态落地。 ### 6.2 SOA架构 早期服务化架构,依赖ESB企业服务总线,偏重传统企业项目。 ### 6.3 集群架构(简单分布式) 多台相同业务节点做负载,无业务拆分,如Nginx+多台应用服务器。 ### 6.4 Serverless 无服务器架构,平台托管资源,开发者只关注业务代码,云原生分布式。 ## 7. 分布式开发常用技术栈 ### Java方向(国内主流) - 框架:SpringBoot + SpringCloud / Alibaba SpringCloud + Dubbo - 数据库:MySQL、Redis、TiDB - 运维:Docker + K8s容器编排(云原生分布式标配) ### Go方向(中间件、高性能服务) Gin/Echo + etcd + Kafka,多用于网关、中间件自研。 ## 8. 分布式系统落地开发流程 1. **需求拆分**:DDD领域驱动设计拆分业务域,划分微服务边界; 2. **架构选型**:确定AP/CP架构、中间件选型; 3. **存储设计**:分库分表、冷热数据分离、多副本策略; 4. **编码开发**:服务开发、RPC对接、异步消息落地; 5. **分布式问题处理**:事务、分布式锁、ID、限流熔断; 6. **压测**:高并发压测,优化瓶颈; 7. **上线部署**:容器化K8s集群部署; 8. **监控运维**:链路追踪(SkyWalking/Pinpoint)、日志(ELK)、告警。 ## 9. 典型应用场景 1. **电商平台**:淘宝/京东,订单、商品、支付拆分,秒杀削峰; 2. **短视频/IM**:抖音、微信,海量用户消息分布式存储; 3. **大数据存储**:HDFS分布式文件系统; 4. **金融支付**:分布式事务保证资金数据一致。 ## 10. 学习路线建议 1. 夯实基础:计算机网络、操作系统、数据库原理; 2. 掌握单体项目→学习微服务框架(SpringCloud/Dubbo); 3. 逐个吃透中间件:Redis、MQ、Nacos; 4. 攻克分布式理论:CAP/BASE/Raft、分布式事务、锁; 5. 云原生:Docker、K8s; 6. 实战:搭建简易分布式电商项目。 ## 附录:高频解决方案汇总 1. **分布式ID**:雪花算法、Redis自增、号段模式; 2. **分布式锁**:Redis锁、Zookeeper临时节点锁、Redisson; 3. **分布式事务**:Seata AT(常用)、TCC、SAGA、本地消息表+MQ; 4. **限流熔断降级**:Sentinel、Resilience4j、Hystrix; 5. **链路追踪**:SkyWalking、Zipkin。