查看: 20|回复: 0

一文分清:高并发、高可用、分布式、微服务,别再混为一谈

[复制链接]

1813

主题

5

回帖

5516

积分

超级版主

积分
5516
发表于 3 天前 | 显示全部楼层 |阅读模式

后端架构领域经常会看到四个高频词汇:高并发、高可用、分布式、微服务。很多文章、技术分享经常把它们放在一起,不少初学者误以为四者是绑定成套、必须同时使用的技术。实际上它们分属不同维度:有的是性能目标,有的是稳定性目标,有的是部署形态,有的是业务拆分的架构风格。可以同时存在,但彼此不能互相替代。
通俗总览

  • 高并发:大量请求涌过来,系统扛不扛得住(性能目标)
  • 高可用:组件故障的时候,系统还能不能继续对外服务(稳定性目标)
  • 分布式:多台机器、多个节点协同完成整套任务(部署运行形态)
  • 微服务:把庞大业务拆成多个小服务,独立开发、独立部署(业务拆分的架构风格)
一、高并发:应对流量洪峰,扛住大量同时请求

核心关注点:短时间大量请求涌入,系统处理能力上限。
不是访问总流量大就等于高并发,重点看单位时间同时抵达的请求数量。比如网站一天一百万访问,均匀分散 24 小时,压力并不大;但秒杀、抢票、热门活动,十秒之内涌入十万用户,这就是典型高并发场景。高并发出现问题的现象:接口超时、页面打不开、下单失败、CPU 打满、数据库压力暴增。
常用解决手段:CDN 静态加速、网关限流、负载均衡、本地 / 分布式缓存、消息队列异步削峰、分库分表、服务水平扩容、防重复提交等。
注意:实现高并发不等于系统就稳定。可以扛住大流量,但一故障就全站瘫痪,依然不是好系统。
二、高可用:假设故障一定会发生,减少停机与故障影响

核心关注点:故障发生之后,业务能不能持续对外提供服务,故障快速恢复能力。
高可用的逻辑前提:硬件、软件、网络总有概率出问题。追求的不是永远不出故障,而是故障发生时,把影响范围降到最小,用户尽量无感知。行业使用可用性 SLA 来衡量,用 “几个 9” 表示:
  • 99.9%(3 个 9):一年允许约 8.76 小时不可用
  • 99.99%(4 个 9):一年允许约 52.56 分钟不可用
  • 99.999%(5 个 9):一年允许约 5.26 分钟不可用
高可用最怕单点故障,某个组件一旦损坏,整个系统直接宕机。对应的解决方案:多副本、主备切换、多机房多活、健康检查、故障转移、熔断、降级、限流。
举个例子:一台应用服务器宕机,负载均衡自动摘掉这台机器,流量切到其他正常实例;数据库主库故障,自动切换到从库继续提供服务。
现实例子:一套系统 QPS 很高,并发很强,但数据库是单机无备份,数据库一旦挂掉全站不可访问,并发能力再强,也不具备高可用。
三、分布式:多节点协同干活,突破单机天花板

核心关注点:任务不再由单台机器完成,多台机器 / 多个进程通过网络协同工作。
为什么要用分布式?单台服务器的 CPU、内存、磁盘、网络总有物理上限。业务规模上涨,单机无论怎么升级配置也扛不住,于是把任务拆分给多台机器共同完成。比如:应用部署多台实例、分布式缓存集群、分布式数据库分片、对象存储、搜索集群,都属于分布式。
但分布式是有代价的:单机内部只是简单函数调用;分布式要走网络,网络天然不可靠,会出现超时、丢包、重复请求。随之带来一大堆新难题:分布式事务、数据一致性、服务发现、链路追踪、幂等性处理。
重点误区:只要多台机器协作,就是分布式,但分布式 ≠ 高可用,也≠高并发。把系统拆到三台机器,但是没有故障转移,某一台节点挂掉,业务直接异常。这是分布式系统,但没有做好高可用。
四、微服务:业务层面做拆分,独立开发独立部署

核心关注点:业务工程组织方式,把庞大单体大系统,拆成边界清晰、职责单一的小型服务。
单体应用

早期全部业务(用户、商品、订单、库存、支付)写在同一个代码仓库,跑在同一个进程。开发简单、部署简单。但随着业务膨胀:改一个小功能,就要完整发布整个大系统;团队互相牵制;某一个模块压力大,只能整体扩容,无法单独扩容某一个模块。
微服务

按业务域拆分:用户服务只管用户,订单服务只管订单,库存服务只管库存。每个服务独立代码库、独立部署、可以根据压力单独扩容。大促期间订单流量暴涨,只扩容订单服务即可,不需要把整个系统全部扩容。不同团队可以各自负责对应服务,迭代互不牵制。
配套常见工具:API 网关、注册中心、配置中心、服务治理、链路追踪、K8s 容器编排、CI/CD 流水线。
⚠️微服务不是银弹,会带来显著复杂度:调用链变长、跨服务排错困难、分布式数据一致性难题、运维成本暴涨。小项目强行上微服务,只会把简单事情变复杂。
分清:微服务几乎都是分布式;但分布式不等于微服务。分布式数据库、分布式缓存属于分布式,但不属于微服务。分布式更多讲机器节点协同;微服务讲业务模块如何拆分与工程交付。
生活化类比:用餐厅理解四个概念

把整套软件系统类比成一家大型餐厅:
  • 高并发:饭点瞬间涌入大量顾客,餐厅能不能接待过来。
  • 高可用:厨师请假、炉灶损坏、收银机器故障,有没有备用方案,尽量不停止营业。
  • 分布式:不只有一个厨房,多个厨房、仓库、服务台跨地点协同工作。
  • 微服务:岗位专业化拆分,专人点餐、专人炒菜、专人做饮品、专人配送,每个岗位独立工作。
举电商秒杀场景,看四个概念如何共存

  • 大量用户同时下单抢购,这是高并发问题;
  • 要求服务器、数据库故障,活动依旧尽量可用,这是高可用问题;
  • 应用、缓存、消息队列、数据库部署多机集群协同,这是分布式;
  • 用户、商品、订单、库存、支付拆成独立服务,分开迭代发布,这是微服务。
它们可以一起出现,但各自解决的问题完全不一样。
常见认知误区澄清

  • 误区:上了微服务,系统自动就高并发、高可用纠正:微服务只是业务拆分方式。如果数据库设计糟糕、缺少缓存、没有容灾策略,就算拆的再细,大促照样崩溃。
  • 误区:分布式系统天然高可用纠正:分布式只是多机器协作。没有做好副本、故障转移,节点故障一样会业务瘫痪。
  • 误区:并发高就代表系统高可用纠正:并发代表流量处理能力;高可用代表故障容错能力,二者指标独立。
  • 误区:项目规模不大,也要追求微服务架构纠正:单体应用对中小型项目往往更简单稳定。微服务会增加运维与开发负担,不要为了技术时髦过度设计。
  • 误区:用 K8s 容器就等于拥有微服务、高可用纠正:K8s 是容器调度基础设施。应用没有多副本、没有健康检查、数据库没有容灾,就算跑在 K8s 上,依旧会故障宕机。
结语

简单四句话记忆:
  • 高并发,解决请求太多,系统扛不扛得住;
  • 高可用,解决组件坏掉,业务还能不能继续服务;
  • 分布式,解决单机能力有限,多节点协同完成任务;
  • 微服务,解决系统过于庞大,业务模块如何拆分、独立迭代部署。
架构设计核心,不是堆砌时髦名词。而是根据自己业务规模,选择合适方案。小规模业务优先追求简单稳定;业务体量上涨之后,再逐步引入分布式、微服务相关能力。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

QQ客服返回顶部