API网关是一个服务器,是系统的后端统一入口。首先,它会提供最基本的路由服务,将调用转发到上游服务。其次,做为一个入口,它还能够进行认证,鉴权,限流等操做,对上游服务保护。因此说,有了API网关,就能够作到“一夫当关,万夫莫开”。git
从技术设计的角度上来讲,API是一种抽象,它隔离了咱们的使用以及实现;从开发管理的角度上来讲,API是一种契约。github
API网关是一种微服务的架构解决方案,服务于API“契约”精神,并尽量的扩大这种契约的影响力,构建一种围绕API开发的“生态”。web
使用面向切面编程在完成一些功能时,可让代码的侵入性更小,实现更加优雅。而在微服务架构中,API网关能够给整个微服务增长面向切面编程的能力。API网关特性以下:spring
优势:sql
缺点:数据库
lua语言开发,某些功能是收费,维护成本高。编程
主要分析一下其源码和原理:后端
Zuul1 是基于 Servlet 框架构建,如图所示,采用的是阻塞和多线程方式,即一个线程处理一次链接请求,这种方式在内部延迟严重、设备故障较多状况下会引发存活的链接增多和线程增长的状况发生。api
Zuul2 的巨大区别是它运行在异步和无阻塞框架上,每一个 CPU 核一个线程,处理全部的请求和响应,请求和响应的生命周期是经过事件和回调来处理的,这种方式减小了线程数量,所以开销较小。又因为数据被存储在同一个 CPU 里,能够复用 CPU 级别的缓存,前面说起的延迟和重试风暴问题也经过队列存储链接数和事件数方式减轻了不少(较线程切换来讲轻量级不少,天然消耗较小)缓存
缺点: 没有动态化配置,不利于管理。
3)sc-gateway
spring Cloud Gateway 是 Spring Cloud 的一个全新项目,基于webflux的,底层也是基于netty
,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
Spring Cloud Gateway 做为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不只提供统一的路由方式,而且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。
相关概念:
org.springframework.cloud.gateway.filter.GatewayFilter
的实例,咱们可使用它修改请求和响应。工做流程:
缺点:没有动态化的配置,只是spring-cloud体系的,其余的业务系统的接入、公用服务的实现、新上接口的添加、动态调整接口的限流速率等等不少问题都很棘手。
使用API网关的最大优势是,它封装了应用程序的内部结构。客户端只须要同网关交互,而没必要调用特定的服务。API网关为每一类客户端提供了特定的API。这减小了客户端与应用程序间的交互次数,还简化了客户端代码。
API网关也有一些不足,它增长了一个咱们必须开发、部署和维护的高可用组件。为了暴露每一个微服务的端点,开发人员必须更新API网关。API网关的更新过程要尽量地简单,这很重要。不然,为了更新网关,开发人员将不得不排队等待。因为全部API请求都要通过网关,它很容易成为系统的性能瓶颈。不过,虽然有这些不足,但对于大多数现实世界的应用程序而言,使用API网关是合理的。
参考:
https://zhuanlan.zhihu.com/p/63944586
https://zhuanlan.zhihu.com/p/32660126
API网关做用、方案及如何选择 - frankyan的文章 - 知乎 https://zhuanlan.zhihu.com/p/32660126
https://www.zhihu.com/question/309582197
https://tech.youzan.com/gateway/
https://mp.weixin.qq.com/s/QqFNcZfHdFbY31rVrsLsEA
https://www.zybuluo.com/yishuailuo/note/844059?utm_source=tool.lu
http://blog.didispace.com/hzf-ms-apigateway-1/
http://blog.didispace.com/hzf-ms-apigateway-2/#lg=1&slide=1
API网关做用、方案及如何选择 - frankyan的文章 - 知乎 https://zhuanlan.zhihu.com/p/32660126
API网关做用、方案及如何选择 - frankyan的文章 - 知乎 https://zhuanlan.zhihu.com/p/32660126
API网关做用、方案及如何选择 - frankyan的文章 - 知乎 https://zhuanlan.zhihu.com/p/32660126
API网关做用、方案及如何选择 - frankyan的文章 - 知乎 https://zhuanlan.zhihu.com/p/32660126