接入层
Category
glossary 词条。节点定位:接入层是流量第一站、负责连接与会话而非业务——两个极端(薄转发壳 vs 塞满业务)都会让问题出现在错误位置。
Definition
接入层是玩家流量进入系统的第一站,负责连接和会话,而不是业务逻辑。它在实践里经常被摆到两个极端:要么被做成薄薄的转发壳,要么被塞进鉴权、活动甚至结算。两个极端都会让问题在错误的位置出现。
Problem
接入层被做成薄壳则会话管理、连接治理无处安放;塞进鉴权活动结算则单点膨胀、横向扩展失效。边界不清的代价是排障时先猜错层。
接入层通常负责什么
- 连接建立、断开、心跳与超时管理。
- 登录态校验和玩家会话绑定。
- 按房间、场景或业务节点路由消息。
- 基础限流、黑名单和异常包处理。
- 写缓冲、背压和链路质量观测。
这些职责的共同特点是:处在所有玩家的公共路径上,而且带状态。这也是理解接入层一切设计取舍的起点。
它和业务层的边界
接入层应该理解连接和会话,不应该承载重业务逻辑。原因很直接:业务逻辑的问题是局部的,放错位置就变成全局故障源。接入层一旦因为某段业务逻辑慢下来,慢的是全量流量。常见做法是让接入层只做三件事——认识连接、认识会话、认识路由,业务判断交给后面的节点。
为什么它天然是有状态的
一旦维持长连接,接入层就有状态:哪条连接属于哪个玩家、绑定哪个节点、当前处于什么弱网状态。这使它和普通无状态 API 网关有本质差别。有状态意味着重启、扩缩容和故障迁移都要回答“已有会话怎么办”,常见答案是会话迁移、重连补偿,或者让客户端回到可重入点。
接入层为什么容易被低估
因为它平时看起来只是转发。真正考验它的是异常时刻:流量洪峰、网络抖动、节点批量故障、灰度发布。这些时刻里,接入层的会话保持、背压和路由更新决定了玩家看到的是短暂波动还是全服事故。平时没事,不代表它的设计是对的,只代表还没被考验过。
会话相关的几个常见设计问题
- 会话和登录态是不是一回事,过期和续期怎么处理。
- 重连时如何找回原会话,找不到时回退到哪一步。
- 多端登录和顶号怎么裁决,旧端如何被通知。
- 心跳超时怎么定,弱网下的误踢怎么缓解。
这些问题没有唯一答案,但每个都要有明确答案。含糊的会话语义,最后往往都变成“偶尔掉线”这类难复现、难归因的问题。
这个词的常见变体
网关、front server、gate、接入服,在不同项目里所指相近,但边界可能不同:有的把登录鉴权放进接入层,有的把推送合包、包体压缩放进来,有的还承担部分匹配逻辑。读别人的方案时,先确认它的接入层承担了哪几件事,比争论名字准确得多。
容量和分摊怎么考虑
单接入层有承载上限,通常是连接数、广播扇出和包转发的组合极限。超过之后,常见做法是前置多个接入层,再加一层路由调度让会话均匀分布。扩容方案最好在设计期想好,因为接入层带状态,事后迁移会话的成本远高于迁移业务节点。
接入层出问题时的典型表现
- 大量玩家同时掉线,而业务节点一切正常。
- 广播延迟随在线人数明显上升,找不到明显的业务原因。
- 重启一次接入层等于全服断线一次,发布窗口变成事故窗口。
- 弱网玩家被提前踢出,真正的异常流量却在正常转发。
这些现象有一个共同指向:问题不在业务逻辑,而在公共路径上的连接与会话管理。
鉴权放不放接入层
鉴权放在接入层还是独立服务,两种做法都常见。放接入层省一次跳转,但证书和密钥管理就和连接职责绑在一起;独立出去更干净,代价是登录链路多一跳。常见折中是登录鉴权独立成服务,接入层只做会话校验和续期。
常见误区
- 做成纯转发壳,会话信息散落在各业务节点,重连和迁移无从做起。
- 把鉴权、活动逻辑甚至结算塞进接入层,让公共路径承载局部风险。
- 只测正常连接,不测断线重连、半开连接和背压,上线后才发现会话恢复没有设计。
- 把接入层和无状态网关等同,按无状态服务的思路滚动重启,制造全服掉线。
Used By
接入层职责约定;网关与会话设计评审;接入故障的表现识别。
Related
关系链:职责 → 与业务层边界 → 有状态性 → 低估原因 → 会话设计 → 容量分摊。上游:glossary/01(服务端职责分层)。下游:networking 树(接入协议)。
Reference
本页为工程经验归纳。