zoukankan      html  css  js  c++  java
  • API网关(API GATEWAY)是什么?有什么作用?

    一、什么是API Gateway

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

    二、为什么需要API Gateway

    在微服务的架构模式下,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可分为两类

    • 单节点 API 网关
    • Backends for frontends 网关

    单节点的 API网关为每个客户端提供不同的API,而不是提供一种万能风格的API。

    这种模式是针对不同的客户端来实现一个不同的API网关。

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

    1、负载均衡

    2、服务熔断

    3、灰度发布

    服务发布上线过程中,我们不可能将新版本全部部署在生产环节中,因为新版本并没有接受真实用户、真实数据、真实环境的考验,此时我们需要进行灰度发布,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,同时影响小。API Gateway可以帮助我们轻松的完成灰度发布,只需要在API Gateway中配置我们需要的规则,按版本,按IP段等,API Gateway会自动为我们完成实际的请求分流。

    4、数据聚合

    由于不同的客户端往往需要的数据完全不同,而这些数据又是不同的 service 提供的,比如上面提到的查看一个商品详情页,我们可能需要同时从商品服务,库存服务,评价服务等中拉取信息,我们可以借助 Gateway 方便完成来自不同 service 的数据聚合。

    5、统一对外接口

    当用户需要集成不同产品或者服务之间的功能,调用不同服务提供的能力。利用APIGateway可以让用户在不感知服务边缘的情况下,利用统一的接口组装服务。

    对于公司内部不同的服务,提供的接口可能在风格上存在一定的差异,通过APIGateway可以统一这种差异。 当内部服务修改时,可以通过APIGateway进行适配,不需要调用方进行调整

    减少对外暴露服务可以增加系统安全性。

    发布于 05-13
  • 相关阅读:
    学编程的那些年
    iOS React Native 学习总结
    java.util.ConcurrentModificationException异常原因及解决方法
    把二元查找树转变成排序的双向链表
    五猴分桃通解公式-敬献给诺贝尔奖获得者李政道博士
    JSP中文乱码问题的由来以及解决方法
    MyEclipse 2014 有用的几个快捷键
    jsp三层架构
    数据库连接的三层架构
    helloworld
  • 原文地址:https://www.cnblogs.com/roak/p/14903236.html
Copyright © 2011-2022 走看看