知识卡片

API网关:统一外部访问入口,屏蔽内部边界并消除安全权限重复实现

普通读书笔记卡

内容

系统拆成微服务后,内部各微服务之间互联互通、彼此点对点访问是没问题的,但如果外部系统也用同样的点对点方式来调用,外部系统会非常头疼——因为外部系统根本不需要、也没办法理解内部这么多微服务各自的职责分工和边界,它只关心自己需要的能力,不关心这个能力具体该由哪个微服务提供。除此以外,外部系统访问还必然涉及安全和权限限制,如果任由外部系统直接访问某个具体的微服务,就意味着每个微服务都要各自实现一套安全和权限功能,这不仅工作量大,而且是大量重复劳动。这两个问题共同指向同一个解法:需要一个统一的API网关,专门负责处理外部系统的所有访问操作——所有外部系统接入都必须经过这个网关,由它统一承担接入鉴权(是否允许接入)、权限控制(可以访问哪些功能)、传输加密、请求路由、流量控制这些功能,外部系统只需要跟网关这一个统一入口打交道,完全不需要感知内部微服务的具体划分。

参考来源

- 位置:《从零开始学架构》第36讲《微服务架构最佳实践 - 基础设施篇》"API网关"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文说明"如果外部系统想调用系统的某个功能,也采取点对点的方式,则外部系统会非常'头大'……如果外部系统直接访问某个微服务,则意味着每个微服务都要自己实现安全和权限的功能,这样做不但工作量大,而且都是重复工作……综合上面的分析,微服务需要一个统一的 API 网关,负责外部系统的访问操作",直接支撑本卡片结论。 - 原始内容:如果外部系统想调用系统的某个功能,也采取点对点的方式,则外部系统会非常"头大"……微服务需要一个统一的 API 网关,负责外部系统的访问操作……主要包括接入鉴权……权限控制……传输加密、请求路由、流量控制等功能。