SpringCloud-API Gateway

1. APIGateway是什么

  APIGateway 即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,可以减少调用方对服务实现的感知。
    没有API网关时的结系统构如下图:由图可以看出,在没有API网关作为统一出口的情况下,需要调用方自己组合各种服务,而且容易让调用方感知后端各种服务的存在。
 

加入API网关时的系统结构如下图:

    由图可以看出,在加入了API网关之后,通过网关暴露接口给调用方,调用方可以在不感知后端服务的情况下调用服务,而且通过统一的接口,后端服务接口的变化不会影响调用方,后端服务变化可以通过网关的转换,对外仍然保持一致的风格。


 

2. APIGateway的作用

 

APIGateway的主要作用有:

1.统一对外接口:

    当用户需要集成不同产品或者服务之间的功能,调用不同服务提供的能力。利用APIGateway可以让用户在不感知服务边缘的情况下,利用统一的接口组装服务。
    对于公司内部不同的服务,提供的接口可能在风格上存在一定的差异,通过APIGateway可以统一这种差异。     当内部服务修改时,可以通过APIGateway进行适配,不需要调用方进行调整 减少对外暴露服务可以增加系统安全性。
 

2.统一鉴权:

    通过APIGateway对访问进行统一鉴权,不需要每个应用单独对调用方进行鉴权,应用可以专注业务。

 

3.服务注册与授权:

    可以控制调用方可以使用和不可以使用的服务。

 

4.服务限流:

    通过APIGateway可以对调用方调用每个接口的每日调用及总调用次数限制

 

5.全链路跟踪:

    通过APIGateway提供的唯一请求Id,监控调用流程,以及调用的响应时间。


 

 

 

API Gateway的优点和缺点

    采用API Gateway也是优缺点并存的。API Gateway的一个最大好处是封装应用内部结构。相比起来调用指定的服务,客户端直接跟gatway交互更简单点。服务提供方也能够减轻繁琐的安全日志等判断。

    API Gateway也有一些缺点。它是一个高可用的组件,必须要开发、部署和管理。还有一个问题,所有的流量都需要通过API Gateway,所以它可能成为开发的一个瓶颈。

 

 

3. 开源API网关框架

    现阶段主要的开源API网关框架有:spring zuul 和kong
 

spring zuul:

    Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。它的主要功能有:认证、压力测试、金丝雀测试、动态路由、负载削减、安全、静态响应处理和主动/主动交换管理。spring zuul 是spring Cloud的组件,可以和spring cloud的各个组件结合使用。
    SpringCloud的整体组建包括:Zuul、Ribbon、EureKa、Fein、Hystrix等。其中Zuul就是一个类似APIGateway的组建,Ribbon是类似于Nginx的代理服务器,Eureka用于注册和发现服务,Hystrix可以作为整个架构的断路服务,用于服务降级。Fein可以作为一个Rest服务的提供者,可以供内部服务之间相互调用。

 

kong

    Kong 是一个现成 的 api gateway 的解决方案,它在 nginx 上进行了开发。
    api gateway 的实现方式有很多种,比如说 JVM 上可以用基于NIO 的框架比如Netty,Vertx,Spring Reactor,JOSS Undertow。现在一个比较流程的没有基于 JVM 的就是 NodeJs。其他的还有 Nginx Plus。

 

 

可以参考:

1)https://blog.csdn.net/tianyaleixiaowu/article/details/78739661

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值