高并发、高可用的分布式解决方案

分布式系统.设计原则

原则说明
​分层解耦​模块化、微服务化,职责清晰
​横向扩展​​无状态设计,支持动态扩容
​冗余容错​​​多实例、多可用区,自动故障转移
​异步削峰​​​​消息队列解耦,提升系统吞吐
​缓存优化​​​​​多级缓存减轻数据库负担
限流降级​​​​​​保护核心服务,优雅应对过载
监控恢复​​​​​​​全链路监控,快速定位与恢复
​安全防护​​​​​​​​接口安全、数据安全、防攻击

单体架构

  • 所有功能都在一个项目中开发,并部署在同一台服务器,一个功能的阻塞会导致整个应用阻塞
  • 随着业务模块的不断拓展,代码的可读性、维护性越来越差,测试成本也越来越高
    在这里插入图片描述

单体架构【集群】

在这里插入图片描述

  • 定义:对外是一个整体,对内由多个单体应用共同对外提供服务
  • 优点:
横向扩展(Scale Out)​​:水平增加机器来提升系统处理业务的速度
​​负载均衡(Load Balancing)​​:将请求均匀地分配到多个节点上,提升系统处理业务的速度
​​高可用性(High Availability)​​:一台机器宕机了,其它机器还能继续工作
  • 缺点:
Session共享问题:通过SpringSession + Redis实现分布式Session共享
单体应用内部业务没有做拆分,一个业务模块的阻塞会导致整个单体应用的阻塞

分布式

  • 本质是用多个独立节点的协作来解决单节点无法处理的高可用、高并发问题
  • 单体架构的集群部署本质上也是分布式的一种
  • 优点:
高可用性:单个节点故障不会导致整个系统崩溃(一台机器挂了,其它机器还能继续工作)
可扩展性:当业务增长时,可通过增加节点(而非替换单台服务器)提升系统能力(如电商大促时临时扩容服务器)
地理灵活性:节点分布在不同区域,可降低用户访问延迟(如国内用户访问国内节点,海外用户访问海外节点)
  • 缺点:
网络不可靠:延迟、丢包、分区(节点间通信中断)可能导致数据不一致
一致性难题:如何保证多个节点的数据同步(例如银行转账时,扣款和收款节点必须同时成功或同时失败,否则会出现 “钱丢了” 的问题)
容错复杂性:需要设计机制检测节点故障、自动切换任务(如 “主从复制”“集群选举”)
性能瓶颈:节点间通信的开销可能抵消分布式带来的优势,需优化网络协议和数据传输效率
  • SOA(面向服务的架构)和 ​​微服务(Microservices)​​ 都是用于构建分布式系统的,核心思想都是​​将一个大型的单体应用拆分为多个服务​​,但两者在理念、设计粒度、技术实现和适用场景上有显著的区别

SOA

  • ​SOA是一种粗粒度的、以服务为中心的架构模式​​,它强调将业务功能封装为独立服务并通过企业级通信协议(如SOAP/ WSDL/UDDI)交互,通常运行在企业服务总线(ESB)之上
  • 实现企业内不同系统之间的​​服务共享与集成​​,解决信息孤岛问题

微服务

  • 微服务是一种细粒度的、去中心化的架构风格​​,将一个应用拆分成一组​​小而专一、松耦合、独立部署​​的服务,并通过轻量级通信机制(如HTTP/REST、gRPC)进行交互
  • 提升系统的​​可扩展性、灵活性和敏捷性
分布式系统复杂性​​:网络延迟、服务发现、容错处理
​​运维成本高​​:需配套 DevOps、监控、日志、链路追踪等
​​数据一致性​​:跨服务事务管理难度大
​​团队协作​​:需要成熟的组织与流程支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大能嘚吧嘚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值