API网关
背景当前每个公司一般都有一个独立的系统每个系统都有自己的网关路由本公司下的各个微服务。但是大集团不止一个公司而且各个公司有可能会出现互动的场景这个时候就需要一个管控全局的角色 API网关也叫平台网关API网关做什么统一域名比如客户端或者第三方应用请求都是https://api.company.com不会区分到https://order.system.com https://user.system.com https://inventory.system.com需要API网关路由到各个系统跨系统路由/api/order/** → 订单系统网关 /api/user/** → 用户系统网关 /api/payment/** → 支付系统网关全局认证/鉴权JWT / OAuth2 校验 在 API 网关统一做通过后把userIdtenantIdroles以 内部 Header 传给下游简单架构图时序图内部系统之间怎么调用先看时序图发现 不管是外部应用和内部之间调用好像流程都一样都是先到平台API网关再路由。很奇怪对吧就好比 一个学校的学生A要找 另外一个班级的学生B已经知道他们都是学生的情况下学生A还要跑到学校门口那里校验身份再进学校去找学生B。不合理啊校验规则虽然内外网都走平台网关但是他们的校验逻辑不一样给出校验逻辑的差异校验维度外网入口通常内网入口通常说明网络来源公网 IP内网 IP 段 / VPC外网更不可信内网可做网段约束TLS 方式单向 TLSHTTPS单向 TLS 或 mTLS内网常加强为双向证书校验客户端身份JWT / OAuth2用户态mTLS / internal token系统态外网认“谁用户”内网认“哪个系统”认证强度用户登录态、MFA 可能机器/应用身份无 MFA内网更偏系统间调用鉴权粒度用户角色 / 数据权限系统级权限system-a → system-b外网更细内网更粗签名/防篡改可选HMAC/签名可选或依赖 mTLS 加密内网常认为传输层已保护限流策略更严格IP / 用户 / API Key较松或更侧重系统级 QPS外网更易被刷内网相对可控黑名单/封 IP常见IP / 国家 / 风控较少或仅内部阻断列表外网威胁面更大WAF / 攻击防护开启SQLi、XSS、CC 等关闭或仅轻量规则WAF 成本/延迟高内网常简化审计粒度用户 接口 参数系统 接口外网审计更细内网偏运维审计侵入式校验更严格参数、长度、编码相对信任仍建议校验内网不等于“不校验”而是“不同重心”调用链信任不默认信任有限信任信任域内零信任下内网也会趋严外网用户身份、攻击防护、滥用控制内网系统身份、调用权限、可审计性总结职责API 网关平台级微服务网关系统级统一域名 / 统一入口✅❌或仅系统内域名跨系统路由/system-a, /system-b✅❌全局认证 / 统一身份校验✅用户态/JWT 等可选内部身份/二次校验全局限流、封禁、风控✅❌协议转换HTTP↔gRPC 等✅可选审计/全链路追踪跨系统✅偏系统内业务路由到具体服务少量✅业务聚合 / BFF前端接口❌一般不✅接口版本系统内少量✅内部缓存 / 内部编排❌✅负载均衡到微服务❌ / 可选✅