Skip to content

接入层 ​

Category ​

glossary 词条。节点定位:接入层是流量第一站、负责连接与会话而非业务——两个极端(薄转发壳 vs 塞满业务)都会让问题出现在错误位置。

Definition ​

接入层是玩家流量进入系统的第一站,负责连接和会话,而不是业务逻辑。它在实践里经常被摆到两个极端:要么被做成薄薄的转发壳,要么被塞进鉴权、活动甚至结算。两个极端都会让问题在错误的位置出现。

Problem ​

接入层被做成薄壳则会话管理、连接治理无处安放;塞进鉴权活动结算则单点膨胀、横向扩展失效。边界不清的代价是排障时先猜错层。

接入层通常负责什么 ​

  • 连接建立、断开、心跳与超时管理。
  • 登录态校验和玩家会话绑定。
  • 按房间、场景或业务节点路由消息。
  • 基础限流、黑名单和异常包处理。
  • 写缓冲、背压和链路质量观测。

这些职责的共同特点是:处在所有玩家的公共路径上,而且带状态。这也是理解接入层一切设计取舍的起点。

它和业务层的边界 ​

接入层应该理解连接和会话,不应该承载重业务逻辑。原因很直接:业务逻辑的问题是局部的,放错位置就变成全局故障源。接入层一旦因为某段业务逻辑慢下来,慢的是全量流量。常见做法是让接入层只做三件事——认识连接、认识会话、认识路由,业务判断交给后面的节点。

为什么它天然是有状态的 ​

一旦维持长连接,接入层就有状态:哪条连接属于哪个玩家、绑定哪个节点、当前处于什么弱网状态。这使它和普通无状态 API 网关有本质差别。有状态意味着重启、扩缩容和故障迁移都要回答“已有会话怎么办”,常见答案是会话迁移、重连补偿,或者让客户端回到可重入点。

接入层为什么容易被低估 ​

因为它平时看起来只是转发。真正考验它的是异常时刻:流量洪峰、网络抖动、节点批量故障、灰度发布。这些时刻里,接入层的会话保持、背压和路由更新决定了玩家看到的是短暂波动还是全服事故。平时没事,不代表它的设计是对的,只代表还没被考验过。

会话相关的几个常见设计问题 ​

  • 会话和登录态是不是一回事,过期和续期怎么处理。
  • 重连时如何找回原会话,找不到时回退到哪一步。
  • 多端登录和顶号怎么裁决,旧端如何被通知。
  • 心跳超时怎么定,弱网下的误踢怎么缓解。

这些问题没有唯一答案,但每个都要有明确答案。含糊的会话语义,最后往往都变成“偶尔掉线”这类难复现、难归因的问题。

这个词的常见变体 ​

网关、front server、gate、接入服,在不同项目里所指相近,但边界可能不同:有的把登录鉴权放进接入层,有的把推送合包、包体压缩放进来,有的还承担部分匹配逻辑。读别人的方案时,先确认它的接入层承担了哪几件事,比争论名字准确得多。

容量和分摊怎么考虑 ​

单接入层有承载上限,通常是连接数、广播扇出和包转发的组合极限。超过之后,常见做法是前置多个接入层,再加一层路由调度让会话均匀分布。扩容方案最好在设计期想好,因为接入层带状态,事后迁移会话的成本远高于迁移业务节点。

接入层出问题时的典型表现 ​

  • 大量玩家同时掉线,而业务节点一切正常。
  • 广播延迟随在线人数明显上升,找不到明显的业务原因。
  • 重启一次接入层等于全服断线一次,发布窗口变成事故窗口。
  • 弱网玩家被提前踢出,真正的异常流量却在正常转发。

这些现象有一个共同指向:问题不在业务逻辑,而在公共路径上的连接与会话管理。

鉴权放不放接入层 ​

鉴权放在接入层还是独立服务,两种做法都常见。放接入层省一次跳转,但证书和密钥管理就和连接职责绑在一起;独立出去更干净,代价是登录链路多一跳。常见折中是登录鉴权独立成服务,接入层只做会话校验和续期。

常见误区 ​

  • 做成纯转发壳,会话信息散落在各业务节点,重连和迁移无从做起。
  • 把鉴权、活动逻辑甚至结算塞进接入层,让公共路径承载局部风险。
  • 只测正常连接,不测断线重连、半开连接和背压,上线后才发现会话恢复没有设计。
  • 把接入层和无状态网关等同,按无状态服务的思路滚动重启,制造全服掉线。

Used By ​

接入层职责约定;网关与会话设计评审;接入故障的表现识别。

关系链:职责 → 与业务层边界 → 有状态性 → 低估原因 → 会话设计 → 容量分摊。上游:glossary/01(服务端职责分层)。下游:networking 树(接入协议)。

Reference ​

本页为工程经验归纳。

游戏知识体系