API Gateway实现API管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

API Gateway实现API管理

编者按

数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离开来分别呈现。微服务对于传统单体架构的优势之一就在于,服务的拆分带来了更新、部署、管理的隔离性,让一些单独的服务可以进行创新和实验。从而支撑了用户体验的不断升级,为实现企业数字化转型的过程,提供了技术架构层面的支撑。

我们现在已经可以很方便的通过一些电子商城购买运营的合约机,而无需到营业厅亲自办理相关的业务,这就是API Gateway的一种底层支撑。由于运营商通过API Gateway向第三方的商务平台开放了与套餐、机型销售等服务,并通过流控、鉴权等机制保障相关的安全性,才使得这样方便流畅的购物体验得以实现。

对于MOBA手游类玩家来说,“王者荣耀”是一款颇受欢迎的游戏。在一些场景下,我们会感知到“不停机更新”“体验服更新”这两种不同方式的更新形态,在底层,就是API Gateway 或者类似技术的实现,支撑灰度发布,让一些新特性发布给体验服(比如传说中露娜的二技能变化,仅在体验服更新,实际上并未如传说中一样在S11赛季更新到正式服),或者特定的游戏用户,待功能完善或者稳定运行,再向正式服或者全部用户发布,让游戏玩家的体验可以更加流畅,甚至是无感知的升级。

这些只是微服务架构或者API Gateway所支撑的万千业务场景中的沧海一粟。

但微服务本身也会带来诸多问题,粒度小难以管理就是其中之一,本文即从这个角度,阐述了API Gateway所起到的作用和一些关键的技术要素。

以微服务为核心的分布式框架贯穿了普元数字化企业技术平台的APaaS层面,本文所介绍的API Gateway是其中的关键组成部分(图中标黄的部分)。

引言:

随着微服务的大红大紫,大家纷纷使用微服务架构来实现新系统或进行老系统的改造。当然,微服务带给我们太多的好处,同时也带给我们许多的问题需要解决。采用微服务后,所有的服务都变成了一个个细小的API,那么这些服务API该怎么正确的管理?API认证授权如何实现?如何实现服务的负载均衡,熔断,灰度发布,限流流控?如何合理的治理这些API服务尤其重要。在微服务架构中,API Gateway作为整体架构的重要组件,它抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决很多API管理难题。

目录:

一、什么是API Gateway

二、为什么需要API Gateway

三、API Gateway中一些重要的功能

四、API Gateway vs 反向代理

五、API Gateway对API的认证及鉴权

六、采用OAuth2方式认证的两种部署方式

七、总结

一、什么是API Gateway

(图片来自网络)

这张图,非常形象的解释了API Gateway和微服务的关系。做为听众,我们只想听到美妙动人的音乐旋律,完全不会在乎音乐是怎么演奏的。而指挥家则根据曲谱负责指挥好每一个演奏者,使每一个演奏者之间配合默契,共同完成这场音乐演出。在微服务的世界里,API Gateway 就如同一位指挥家,“指挥”着不同的“演奏人”(微服务)。

我们知道在微服务架构中,大型服务都被拆分成了独立的微服务,每个微服务通常会以RESTFUL API的形式对外提供服务。但是在UI方面,我们可能需要在一个页面上显示来自不同微服务的数据,此时就会需要一个统一的入口来进行API的调用。上图中我们可以看到,API Gateway就在此场景下充当了多个服务的大门,系统的统一入口,从面向对象设计的角度看,它与外观模式类似,API Gateway封装了系统的内部复杂结构,同时它还可能具有其他API管理/调用的通用功能,如认证,限流,流控等功能。

二、为什么需要API Gateway

首先,Chris Richardson在http://microservices.io/中也提及到,在微服务的架构模式下,API Gateway是微服务架构中一个非常通用的模式,利用API Gateway可以解决调用方如何调用独立的微服务这个问题。

从部署结构上说,上图是不采用API Gateway的微服务部署模式,我们可以清晰看到,这种部署模式下,客户端与负载均衡器直接交互,完成服务的调用。但这是这种模式下,也有它的不足。

▪不支持动态扩展,系统每多一个服务,就需要部署或修改负载均衡器。

▪无法做到动态的开关服务,若要下线某个服务,需要运维人员将服务地址从负载均衡器中移除。

▪对于API的限流,安全等控制,需要每个微服务去自己实现,增加了微服务的复杂性,同时也违反了微服务设计的单一职责原则。

上图为采用API Gateway模式,我们通过上图可以看到,API Gateway做为系统统一入口,实现了对各个微服务间的整合,同时又做到了对客户端友好,屏蔽系统了复杂性和差异性。对比之前无API Gateway模式,API Gateway具有几个比较重要的优点:

▪采用API Gateway可以与微服务注册中心连接,实现微服务无感知动态扩容。

▪API Gateway对于无法访问的服务,可以做到自动熔断,无需人工参与。

▪API Gateway可以方便的实现蓝绿部署,金丝雀发布或A/B发布。

▪API Gateway做为系统统一入口,我们可以将各个微服务公共功能放在API Gateway 中实现,以尽可能减少各服务的职责。

▪帮助我们实现客户端的负载均衡策略。

三、API Gateway中一些重要的功能

下面我们用图来说明API Gateway中一些重要的功能:

▪负载均衡

相关文档
最新文档