服务支持高并发理论
· 3 min read
后端服务能否支撑起百万并发,取决于很多因素。
首先看看当100个浏览器(客户端)同时请求后端服务时,系统会面临极端高并发压力,可能出现以下现象,涉及网络、操作系统、应用架构等多层瓶颈。
实操:
高并发的微服务架构组成:
SLB
微服务架构中,SLB(Server Load Balancer) 即服务器负载均衡器,是一种将流量均匀分发到多个服务实例的基础设施组件。它本质上是微服务的 “入口网关”,负责实现流量分发、健康检查、故障转移等功能,通常部署在 API 网关前 或 服务间调用链路中。
一、SLB 的核心作用
- 流量分发:将客户端请求(如 HTTP、TCP)按策略(轮询、IP 哈希、加权负载)分发给多个服务实例。
- 健康检查:定期探测服务实例状态(如 HTTP 200 响应),自动剔除故障实例。
- 高可用保障:避免单点故障,通过多实例 SLB 实现自身的冗余部署。
- 性能优化:通过 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%多都是集群内部署;
一、限流
网关限流、应用层限流 ...
高并发架构演进