微服务架构API网关应用场景与优势分析
我们在上文中给大家简单介绍了微服务开发的一些基础知识等编程内容,而今天我们就再来说说,微服务架构API网关应用场景与优势分析。
考虑到微服务架构中服务的数量很多,为了便于服务对外统一的管理,API网关的引入是必不可少的。API网关旨在提供统一的API入口点,来管理多个服务内部API,可方便实现对平台众多服务接口进行管控,如对访问服务的身份认证、业务鉴权、流量并发控制、API调用的计量或计费等。
API网关常用于以下场景:
黑白名单:实现例如通过IP地址来禁止访问某些服务的某些功能。
日志:实现日志访问的记录,用于分析访问、处理性能指标,并将分析结果提供给其他模块使用,如:运维平台的统计功能。
协议适配:实现通信协议校验、适配转换的功能。
身份认证:负责外部系统的访问身份认证。
计流限流:实现微服务访问流量计算,基于流量计算分析进行限流等。
路由:API网关的核心功能,实现请求的转发。
API网关的引入为微服务架构应用带来诸多的好处,如下:
避免将内部信息/接口泄露给外部:能够将对外发布的API与微服务内部的API区分开来,使得各个微服务在添加或变更时,能有明确的安全边界,避免多过的对外暴露。
为微服务添加额外的安全层:能够提供一套额外的保护层,用以应对SQL注入、Dos攻击等,其中系统的权限控制可以再这一层来实施。
支持多种混合通信协议:考虑到微服务架构中,各个微服务的平台与语言的多样性,通常将对外提供基于HTTP或REST的API接口,而内部微服务将根据自身服务情况采用不同的通信协议(如:ProtoBuf、RPC等)。API网关则跨域这些内部不同协议的微服务,提供一个基于REST的统一外部API。
减低构建微服务的复杂性:基于微服务架构应用的复杂性,如API令牌、访问控制、限速限流等,每一项功能的添加,对会额外对各个服务带来影响,从而影响微服务的开发周期。这些功能如果在API网关上统一处理,则会从代码层面进行了有效的隔离,使得不会影响其他微服务,这样更有利于其他微服务只需关注于实际的业务开发。
常见的API网关实现方式很多,如:Nginx、Kong、SpringCloudZuul、Træfɪk等。