Skip to main content

服务支持高并发理论

· 3 min read

后端服务能否支撑起百万并发,取决于很多因素。

首先看看当100个浏览器(客户端)同时请求后端服务时,系统会面临极端高并发压力,可能出现以下现象,涉及网络、操作系统、应用架构等多层瓶颈。

实操:

高并发的微服务架构组成:

SLB

微服务架构中,SLB(Server Load Balancer) 即服务器负载均衡器,是一种将流量均匀分发到多个服务实例的基础设施组件。它本质上是微服务的 “入口网关”,负责实现流量分发、健康检查、故障转移等功能,通常部署在 API 网关前 或 服务间调用链路中

一、SLB 的核心作用

  1. 流量分发:将客户端请求(如 HTTP、TCP)按策略(轮询、IP 哈希、加权负载)分发给多个服务实例。
  2. 健康检查:定期探测服务实例状态(如 HTTP 200 响应),自动剔除故障实例。
  3. 高可用保障:避免单点故障,通过多实例 SLB 实现自身的冗余部署。
  4. 性能优化:通过 SSL 卸载、内容缓存等功能减轻服务压力。

二、SLB 的部署位置

客户端 → 云厂商 SLB → K8s 集群节点(NodePort 或 IPVS 转发)→ Pod

集群入口层(南北流量)

部署在 Kubernetes 集群外部,作为整个微服务集群的统一入口,处理来自客户端的外部流量(南北流量)。
典型场景

  • 用户访问电商网站的请求首先到达 SLB,再由 SLB 转发至 Nginx 或 API 网关。
  • 云厂商提供的 LoadBalancer 类型 Service(如 AWS ELB、阿里云 SLB)即属此类。

服务间调用层(东西流量)

部署在 Kubernetes 集群内部,处理服务间的内部调用(东西流量)。
典型场景

  • 订单服务调用库存服务时,通过集群内部 SLB 选择可用的库存服务实例。
  • K8s 中的 ClusterIP 类型 Service 本质上是内部 SLB,由 kube-proxy 实现转发。

三、SLB 实现方式

开源软件实现

  • Nginx:高性能 HTTP 负载均衡器,支持四层和七层转发。
  • HAProxy:专注于 TCP 和 HTTP 负载均衡,适合高并发场景。
  • Envoy:云原生代理,支持动态配置和服务发现,常与 Istio 结合。
  • Traefik:DaemonSet 模式部署,监听节点 80/443 端口,避免 NodePort 或 LoadBalancer 的多层转发延迟。90%多都是集群内部署;

一、限流

网关限流、应用层限流 ...

高并发架构演进

https://juejin.cn/post/6844903765112422414

https://pphc.lvwenhan.com/

http://www.52im.net/thread-2007-1-1.html