热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringCloudAPIGateway

1.APIGateway是什么APIGateway即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,

1. APIGateway是什么

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

SpringCloud-API Gateway

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

SpringCloud-API Gateway

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



2. APIGateway的作用


APIGateway的主要作用有:

1.统一对外接口:

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

2.统一鉴权:

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


3.服务注册与授权:

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


4.服务限流:

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


5.全链路跟踪:

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

SpringCloud-API Gateway


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










==============================

QQ群:143522604

群里有相关资源

欢迎和大家一起学习、交流、提升!

==============================


推荐阅读
author-avatar
cui115588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有