作者:小傅哥
沉淀、分享、成长,让自己和他人都能有所收获!😄
我说:"很多互联网大厂,很少基于 SpringMVC 模块对外提供 WEB 服务的 HTTP 接口!" 一下炸窝了,你说,哪个厂不用,你说。还,还不用 SpringMVC 我天天用! 哈哈哈,好在我最近阅读到了美团的这篇技术文章《百亿规模API网关服务Shepherd的设计与实现》
他说:在没有Shepherd API网关之前,美团业务研发人员如果要将内部服务输出为对外的HTTP API接口。通常要搭建一个Web应用,用于完成基础的鉴权、限流、监控日志、参数校验、协议转换等工作,同时需要维护代码逻辑、基础组件的升级,研发效率相对比较低。此外,每个Web应用都需要维护机器、配置、数据库等,资源利用率也非常差。
他说:美团内部一些业务线苦于没有现成的解决方案,根据自身业务特点,研发了业务相关的API网关。放眼业界,亚马逊、阿里巴巴、腾讯等公司也都有成熟的API网关解决方案。
而他说的
和我说的
,是同一个事情。并且我们所设计的API网关架构模型也都是类似的! 类似的架构设计,并不会让我多惊讶。因为API网关所实现的目标一致,在同一目标下如果研发思考高度一致,那么就不需要太多技术认知对其。—— 所以,少和臭棋篓子下棋!
接下来,小傅哥就给大家分享下。两套API网关的架构设计,以及你该怎么学习才能掌握这些技术技能和提高这些技术认知。
一、技术设计与实现
就API网关
来说,我们可以先抽象出一个最简单的模型来理解。它的核心目标是统一提供 HTTP 请求服务,也就是说你可以在不需要额外开发 WEB 应用的前提下,对外把自身的服务通过 HTTP 请求协议暴漏出去。因为在互联网大厂中,各个微服务系统的交互主要以 RPC 为主,同时为了提供带有基础功能(鉴权、监控、限流等) HTTP 服务,所以有了API网关
服务。
