2.1 接入层与流量治理体系


2.1 接入层与流量治理体系

本节摘要:接入层是用户请求进系统的第一道关卡,它负责把流量分发到后端、挡住异常请求、加速静态资源。本节讲接入层的三大组件——负载均衡(分发策略)、CDN(静态加速)、WAF(安全防护),以及接入层怎么做第一道限流。重点理解:接入层不只是转发,它是系统的门面和第一道防线,配好了能挡掉大量后端压力。

学习目标

阅读完本节,你应当能够:

  1. 说清负载均衡的几种策略(轮询、加权、最小连接、一致性哈希)及适用场景
  2. 解释四层负载均衡和七层负载均衡的差别
  3. 理解 CDN 的工作原理和它解决的核心问题
  4. 说清 WAF 在接入层的作用
  5. 设计一个接入层的流量分发与限流方案

一、问题与直觉

假设你的应用部署了 10 台服务器,用户请求来了怎么分给这 10 台?最直觉的做法是轮流分(第 1 个给 A、第 2 个给 B……),但这只是最朴素的轮询。真实场景里,10 台服务器可能配置不同(有的强有的弱),用户可能遍布全国(离不同服务器远近不同),有的请求是静态资源(图片、JS),有的要动态计算。一刀切的轮询显然不合适。

这就是接入层要解决的问题。它站在用户和后端服务器之间,根据策略把请求分发到合适的后端,同时做加速和安全防护。一个配置得当的接入层,能让后端服务器的利用率最大化、用户的访问速度最快、异常流量被挡在门外。配置不当,要么某些服务器过载、某些闲置,要么用户绕远路访问慢,要么异常请求穿透到后端把系统打挂。

接入层是高并发系统的门面,也是第一道防线。理解它怎么工作,是理解整个高并发架构的起点。

二、核心原理

2.1 负载均衡:把请求分发到后端

负载均衡(Load Balancing)是接入层的核心功能,它把进入的请求按某种策略分发到多台后端服务器。常见的分发策略有这么几种。

轮询(Round Robin):依次把请求分给每台服务器,循环往复。最简单,假设所有服务器能力相同。适合服务器配置一致的场景。

加权轮询(Weighted Round Robin):给每台服务器一个权重,按权重比例分发。配置强的服务器权重高,分到的请求多。适合服务器配置不一致的场景。

最小连接(Least Connections):把请求分给当前连接数最少的服务器。它动态感知服务器负载,比静态权重更智能。适合请求处理时间差异大的场景。

一致性哈希(Consistent Hashing):根据请求的某个标识(如用户 ID、会话 ID)算哈希,映射到固定服务器。同一个用户的请求总落到同一台服务器。适合需要会话保持(Session Sticky)的场景。

策略 分发依据 优点 适用场景
轮询 顺序 简单 服务器配置一致
加权轮询 静态权重 适配异构配置 配置不一致
最小连接 实时连接数 动态感知负载 请求耗时差异大
一致性哈希 请求标识哈希 会话保持 需要会话粘性

还有一个重要区分是四层负载均衡七层负载均衡。四层(传输层,基于 IP 和端口)只看网络层信息,分发速度快,但不理解应用协议,典型代表是 LVS。七层(应用层,基于 HTTP 头、URL、Cookie)能理解应用协议,分发更灵活(按 URL 路由到不同服务),但开销大,典型代表是 Nginx。实际架构常是两层叠加:四层做第一级分发(快),七层做第二级路由(灵活)。

2.2 CDN:静态资源的边缘加速

CDN(Content Delivery Network,内容分发网络)解决的是静态资源(图片、视频、JS、CSS)的访问速度问题。它的原理是把静态资源缓存在离用户最近的边缘节点,用户请求时从最近的节点取,不用每次都回源到中心服务器。

CDN 的价值有两个。一是加速:用户到边缘节点的物理距离近,网络延迟低。二是减压:静态请求被边缘节点挡掉了,不会涌向后端服务器,后端只处理动态请求。对一个图片密集的网站,开 CDN 能把后端流量降一个数量级。

CDN 的关键配置是缓存策略——哪些资源缓存、缓存多久、怎么更新。配得好,命中率(从边缘节点直接返回的比例)能到 95% 以上;配得差,大量请求回源,CDN 形同虚设。静态资源一般配长缓存(几天到几个月),更新时用文件名带版本号(如 app.v2.js)强制刷新。

2.3 WAF:挡住恶意请求

WAF(Web Application Firewall,Web 应用防火墙)在接入层做安全防护,挡住恶意请求——SQL 注入、XSS 攻击、恶意爬虫、CC 攻击(用大量请求耗尽资源)。

WAF 的价值在高并发场景特别突出。一次 CC 攻击,几万个请求秒级涌入,后端扛不住;WAF 在入口识别出这些是恶意请求(根据频率、特征、行为),直接拦截,后端根本感知不到。这比让后端自己防高效得多——在门口拦贼,比让贼进屋再抓省力。

2.4 接入层限流:第一道闸门

除了分发和安全,接入层还常做第一道限流。在请求进入后端之前,先在接入层卡一道:总 QPS 超过某个阈值,多余的请求直接拒绝,不让它们进入后端。

接入层限流的好处是“早拒绝早省事”——恶意或过量请求在门口就挡掉,不占用后端任何资源。它通常是粗粒度的(按总 QPS 或按 IP),细粒度的限流(按用户、按业务)放在应用层做。下一节讲限流算法时会详细展开。

三、工程实践要点

3.1 分层负载均衡的配合

实际架构里,负载均衡常是分层的:最外层 DNS 做地理级分发(把不同地区用户引到最近的机房),机房入口四层负载均衡做服务器组分发(快),组内七层负载均衡做应用路由(灵活)。三层各司其职,共同把请求送到合适的应用实例。

这种分层不是为了复杂而复杂,而是每一层解决的问题不同。DNS 解决地理距离,四层解决高效分发,七层解决应用路由。少一层,某个维度就照顾不到。

3.2 健康检查:别把请求分给死掉的服务器

负载均衡有个基本功能不能少:健康检查。它定期探测后端服务器是否存活,一旦某台挂了,立即把它从分发列表里剔除,请求不再分给它。没有健康检查,一台服务器死了,负载均衡还在往它分发请求,这些请求全失败,用户体验崩塌。

⚠️ 常见坑:健康检查的探测接口和真实业务接口不是一回事。探测接口返回正常,不代表业务接口能正常工作(可能依赖的数据库挂了)。健康检查要探测能反映真实健康状态的接口,最好是个能连带检查关键依赖的综合健康端点。

3.3 接入层是防线不是摆设

接入层配得再好,如果不根据实际流量调,就是摆设。CDN 缓存策略要按命中率调,WAF 规则要按攻击特征更新,限流阈值要按容量测试定。这些都需要可观测数据支撑——看 CDN 命中率、WAF 拦截量、限流触发频率,据此优化配置。

💡 关键直觉:接入层的价值在于“挡在前面”,把大量本不该到后端的请求(静态、恶意、超量)挡掉。后端因此能专注于处理真正需要它处理的动态业务请求。一个配得好的接入层,能让后端服务器数量减半,这是最划算的优化。

本节要点回顾

  • 负载均衡策略:轮询、加权轮询、最小连接、一致性哈希,按场景选。
  • 四层 vs 七层:四层快但不理解协议(LVS),七层灵活但开销大(Nginx),常叠加用。
  • CDN:静态资源边缘缓存,加速加减压,关键是缓存策略和命中率。
  • WAF:在入口挡恶意请求,比后端自防高效得多。
  • 接入层限流:第一道粗粒度闸门,早拒绝早省事。
  • 分层负载均衡:DNS 地理分发+四层组分发+七层应用路由,各解决一个维度。
  • 健康检查:必备,且要探测真实健康状态,别用与业务无关的接口。

下一节我们深入讲限流熔断降级三板斧,看流量治理的核心手段怎么落地。

四种流量治理手段的叠加关系

接入层的限流、熔断、降级、排队不是四个孤立的开关,而是有明确的叠加次序,理解这个次序才能组合出有效的防护。排队在最前:把瞬时洪峰削成平稳流入,牺牲少量延迟换取系统稳定,对用户无感。限流在第二道:超过容量的请求快速拒绝,保护后端不过载——它的价值在于"拒绝得快",与其让请求排队到超时,不如立刻返回友好提示。熔断在第三道:当某个下游已经故障,后续调用直接失败跳过,不再白白消耗线程资源去撞墙,故障恢复后逐步放行试探。降级是最后的兜底:主动砍掉非核心功能,把省下的资源留给主链路,页面少个推荐位用户能忍,下单失败不能忍。

四道手段的触发条件要用不同的信号:排队看队列长度、限流看吞吐水位、熔断看下游错误率、降级看整体容量裕度。实践中最常见的错误是用同一个指标驱动全部手段,结果要么全不触发、要么连环触发互相放大。另外提醒配置的默认值问题:所有防护手段上线时必须带"手动开关",自动策略失灵时能一键切换到人工模式——防护系统本身也会故障,这个备份是最后的保险。

图:四道流量治理手段的纵深次序

图:四道流量治理手段的纵深次序

这张图的读法是从左到右:越靠左的手段越温和、越靠右越激烈,防护强度递进。设计接入层时按这个次序逐道部署,每道上线后观察一个完整大促周期再加下一道,比一次全上更稳——出问题时你才知道是哪一道在起作用。

再补充接入层选型的一个横评视角:自建网关、云厂商网关、服务网格边车三种形态的取舍。自建网关可控性最强、插件随心,但开发和运维投入大,适合有平台团队的组织;云网关开箱即用、与云生态深度集成,代价是插件能力和迁移自由度受限;边车模式把治理下沉到服务旁,语言无关、粒度细,但每个实例的边车增加了资源开销和排障链路长度。中小团队首选云网关,规模上来后再评估自建或混合——治理能力的自建时机,同样是"应急成本超过采购成本"的判断。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U