API网关
API 网关(API Gateway)提供高性能、高可用的 API(Application Programming Interface,应用程序接口) 托管"服务"
API网关的作用
API网关的分类
- 从作用和功能可以将API网关分为流量网关和业务网关
- 流量网关的功能主要是"对外"的防御,业务网关的功能主要是"对内"的调理
常见的API网关
Zuul、Zuul 2.x
Zuul 是 Netflix 开源的使用BIO模型的 API 网关系统,它的主要设计目标是动态路由、监控、弹性和安全 Zuul 的内部原理可以简单看做是很多不同功能 filter 的集合,最主要的就是 pre、routing、post 这三种过滤器,分别作用于调用业务服务 API 之前的请求处理、直接响应、调用业务服务 API 之后的响应处理
Zuul 2.x 是基于 Netty 内核重构的版本 Zuul 2.x的核心功能:1.Service Discovery 2.Load Balancing 3.Connection Pooling 4.Status Categories 5.Retries 6.Request Passport 7.Request Attempts 8.Origin Concurrency Protection 9.HTTP/2 10.Mutual TLS 11.Proxy Protocol 12.GZip 13.WebSockets
Zuul系列是Spring Cloud Netflix 子项目的核心组件之一,基于Java语言开发、过滤器模式设计。并需要集成其他子项目实现 API 网关功能:
- Hystix: 用于流量控制,实现流量限制。
- Ribbon:提供负载均衡能力,并可以提供网络性能和错误的信息。
- Turbine: 实时收集一些指标,用于监控服务与网络流量。
- Archaius:提供动态配置的能力
Spring Cloud Gateway
其它诸如Nginx、Kong
参考API Gateway
网关对比
自己实现API网关
可以分为三步:
|