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

分布式系统

文章目录

    • 什么是后端中的分布式系统
    • 为什么需要分布式系统?
    • 核心技术、知识
      • 1、服务发现与注册
      • 2、API 网关
      • 3、配置中心
      • 4、分布式缓存
      • 5、消息队列
      • 6、分布式数据存储
    • 深入与拓展
      • 第一阶段:基础
      • 第二阶段:理论学习
      • 第三阶段:实践
      • 第四阶段:深入与拓展

什么是后端中的分布式系统

分布式系统是一组位于网络上的计算机,为了共同完成一个任务而协同工作的系统。对于用户来说,它就像一个单一、连贯的系统。

在后端开发中,分布式系统意味着将原本运行在一台强大服务器(单体架构)上的应用程序,拆分成多个服务,这些服务可以部署在不同的服务器(节点)上,通过网络进行通信和协作。

核心目标:通过协作获得更高的性能(吞吐量)、可扩展性(水平扩展)、可用性(容错)和可维护性。

为什么需要分布式系统?

1、突破单机性能瓶颈:单台服务器的计算能力、内存、磁盘I/O和网络带宽总是有限的。分布式系统可以通过增加普通机器来提升整体能力。
2、高可用性与容错:单台服务器故障会导致整个服务不可用。分布式系统中,部分节点宕机,其他节点可以接管工作,保证服务不中断。
3、可扩展性:当用户量和数据增长时,可以通过简单地增加机器(水平扩展)来应对,而不是不断升级单台服务器的硬件(垂直扩展,成本高且有限)。
4、低延迟:可以将服务部署在全球各地的数据中心,让用户就近访问,减少网络延迟。

核心技术、知识

通过一些核心概念和图表来深入理解。

1、服务发现与注册

在动态的分布式环境中,服务的实例可能会因为扩容、故障或更新而频繁地改变IP地址和端口。服务发现机制允许服务自动找到并与其他服务通信。

工作流程:

Service B (消费者)服务注册中心(e.g., Nacos, Consul, Eureka)Service A (实例)Service B (消费者)服务注册中心(e.g., Nacos, Consul, Eureka)Service A (实例)注册元数据:服务名、IP、端口等1. 注册 / 心跳2. 查询:Service A的地址列表3. 返回可用实例列表4. 直接向选择的实例发起请求

涉及技术:Nacos,Consul,ZooKeeper,Eureka

2、API 网关

它是系统的唯一入口,所有外部请求首先经过网关。它负责路由、认证、限流、监控等跨切面关注点。

架构图:

分布式系统集群

注册

注册

注册

客户端请求

API Gateway

Service 1

Service 2

Service 3

服务注册中心

涉及技术:Spring Cloud Gateway,Kong,Zuul,Nginx

3、配置中心

将应用程序的配置(如数据库连接、第三方API密钥、功能开关)从代码中分离出来,集中管理。动态修改配置后,所有服务实例可以自动获取最新配置,无需重启。

工作流程:

管理员配置中心(e.g., Nacos, Apollo)多个服务实例管理员配置中心(e.g., Nacos, Apollo)多个服务实例服务应用新配置1. 在界面上修改配置并发布2. 推送更新通知 (Push)或由服务拉取 (Pull)3. 获取最新配置

涉及技术:Nacos,Apollo,Spring Cloud Config

4、分布式缓存

将高频访问的数据存储在内存中,减少对后端数据库的访问,极大提升读取性能和降低数据库负载。通常是分布式的键值存储。

架构图:

分布式缓存集群 e.g., Redis Cluster

节点 1

节点 2

节点 3

应用程序集群

后端数据库

涉及技术:Redis(Cluster/Sentinel模式),Memcached

5、消息队列

用于实现服务之间的异步通信和解耦。生产者将消息发送到队列,消费者从队列中取出消息进行处理。它还提供了流量削峰和保证最终一致性的能力。

工作流程:

消费者服务消息队列(e.g., Kafka, RabbitMQ)生产者服务消费者服务消息队列(e.g., Kafka, RabbitMQ)生产者服务发送后即刻返回,无需等待处理1. 发送消息2. 推送消息 (或C主动拉取)3. 处理成功,发送确认ACK4. 消息处理完毕,从队列移除

涉及技术:Kafka(高吞吐),RabbitMQ(功能丰富),RocketMQ

6、分布式数据存储

数据量巨大,单机数据库无法存储和处理。需要将数据分片存储到多台机器上。

  • CAP定理:一个分布式系统不可能同时满足一致性(C)、可用性(A)和分区容错性(P),只能三者取其二。
  • 数据库分片:将一张大表的数据按某种规则(如用户ID哈希)拆分到不同的数据库节点中。
  • 复制:为主数据库创建多个从库副本,用于读写分离和故障转移。

分片与复制示意图:

分片 3

分片 2

分片 1

应用程序

主库 Master

从库 Slave

主库 Master

从库 Slave

主库 Master

从库 Slave

涉及技术:

  • NoSQL:MongoDB(文档),Cassandra(宽列)
  • NewSQL:TiDB,CockroachDB
  • 中间件:MyCat,ShardingSphere

深入与拓展

第一阶段:基础

1、语言与网络:熟练掌握一门后端语言(如 Java/Go)。深刻理解 HTTP/1.1/2/3、TCP/IP 协议。

2、数据库与缓存:精通一种关系型数据库(如MySQL)和一种 NoSQL 数据库(如Redis)。理解事务、索引、锁、主从复制等概念。

第二阶段:理论学习

1、阅读经典:精读《数据密集型应用系统设计》,这是分布式领域的圣经。
2、理解核心理论:弄懂CAPBASE、一致性协议(如 Raft/Paxos)。不必深究数学证明,但要理解其思想和工作流程。

第三阶段:实践

1、选择一个生态:建议从 Spring Cloud Alibaba 开始,因为它集成了很多优秀组件,文档丰富,社区活跃。
2、动手搭建:

  • Nacos搭建一个服务注册和配置中心。
  • Spring Cloud Gateway搭建一个 API 网关。
  • 搭建一个Redis 哨兵或集群,并在代码中集成它。
  • 搭建KafkaRabbitMQ,写一个生产者和消费者的 Demo。

3、做一个综合项目:设计一个简单的电商系统,包含用户、商品、订单、支付等服务。将上述所有技术都用上去:

  • 服务注册到 Nacos。
  • 通过网关暴露 API。
  • 用 Redis 缓存商品信息。
  • 下单后,通过 MQ 通知库存服务和积分服务。

第四阶段:深入与拓展

1、容器化与编排:学习DockerKubernetes。K8s 本身就是一个极其复杂的分布式系统,它提供了服务发现、负载均衡、自愈等能力,是现代分布式应用的基石。
2、观察与监控:学习使用Prometheus(收集指标)、Grafana(展示仪表盘)、ELK(日志收集分析)来监控你的分布式系统。
3、读源码:选择一两个你常用的组件(如 Redis、Nacos),开始尝试阅读其源码,理解其核心实现。

http://www.jsqmd.com/news/611698/

相关文章:

  • 2026年苏州私立民办学校如何选择?关键因素参考 - 品牌排行榜
  • 从‘循环对称’这个词说起:聊聊无线通信里噪声模型的那些‘潜规则’
  • 3分钟掌握手机号码定位技术:一键查询号码归属地与地理位置
  • 终极指南:如何利用Awesome DevSecOps构建企业安全文化全流程
  • Unity3D 快速入门 1 - 界面操作
  • 2026年昆山查老赖财产最靠谱的律师服务解析 - 品牌排行榜
  • 接雨水——单调栈(python)
  • 关于Java EE应用中xml解析类的问题
  • 使用Phi-4-mini-reasoning优化算法逻辑:以LSTM时间序列预测为例
  • MiniCPM-o-4.5-nvidia-FlagOS进阶:使用Matlab进行模型输出数据的可视化分析
  • 2026年质量好的仿棉天鹅绒/金丝绒天鹅绒/经编天鹅绒/平板天鹅绒公司口碑哪家靠谱 - 品牌宣传支持者
  • 亲测8款AI写论文神器,维普查重一把过,零AIGC痕迹 - 麟书学长
  • JointJS部署与打包终极指南:从开发到生产环境的完整实践
  • WeKnora新手必看:无需代码,三步创建属于你的即时知识问答系统
  • 使用Phi-4-mini-reasoning进行软件测试用例智能生成与面试题解析
  • FFmpeg在RK3588上的完整移植教程:从交叉编译到CMake集成
  • Flutter Engine热重载原理:开发效率提升的黑科技
  • Hypersistence Utils数组类型深度解析:PostgreSQL ARRAY到Java List的完美映射
  • 2026年昆山执行案件口碑好的律师推荐及选择建议 - 品牌排行榜
  • 百度网盘直连地址解析工具:告别限速的终极方案
  • Pixel Script Temple Node.js后端服务部署与监控脚本生成
  • 终极指南:Kanboard监控告警配置 - 打造异常情况及时响应机制
  • EcomGPT-7B电商数据爬虫实战:Python自动化采集与清洗方案
  • 2. ES6中数组新增了哪些扩展?
  • 3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验
  • IOSSecuritySuite 运行时Hook检测:Flex等工具的克星
  • OpenClaw对话式编程:千问3.5-27B辅助Python脚本调试
  • 在Ubuntu 22.04上为你的J-Link适配OpenOCD:从源码编译到成功连接实战记录
  • 3大场景解锁显卡潜能:NVIDIA Profile Inspector开源工具性能调优实战指南
  • Mercure 认证授权终极指南:如何构建企业级安全的实时通信系统