天天看点

微服务网关,你选谁?

什么是API网关

API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。

API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

为什么需要 API 网关

假设我们要使用微服务架构构建一个电商平台,以下可能是一些潜在的服务:

•·购物车服务•·订单服务•·商品服务•·评论服务•·库存服务

API 网关是客户端访问服务的统一入口,API 网关封装了后端服务,还提供了一些更高级的功能,例如:身份验证、监控、负载均衡、缓存、多协议支持、限流、熔断等等,API 网关还可以针对不同的客户端定制不同粒度的 API:

微服务网关,你选谁?

网关(API Gateway)的设计要素

•限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。•缓存:数据缓存。•日志:日志记录。•监控:记录请求响应数据,api耗时分析,性能监控。•鉴权:权限身份认证。•灰度:线上灰度部署,可以减小风险。•路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发。

网关选型

微服务网关,你选谁?
微服务网关,你选谁?

OpenResty

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。因此,我们可以做出各种符合我们需要的网关策略的Lua脚本,以其为基础构建高性能的网关系统。

kong

Kong基于OpenResty,是一个云原生、快速、可扩展、分布式的Api 网关。继承了OpenResty的高性能、易扩展性等特点。Kong通过简单的增加机器节点,可以很容易的水平扩展。同时功能插件化,可通过插件来扩展其能力。而且在任何基础架构上都可以运行。具有以下特性:•提供了多样化的认证层来保护Api。•可对出入流量进行管制。•提供了可视化的流量检查、监视分析Api。•能够及时的转换请求和相应。•提供log解决方案•可通过api调用Serverless 函数。

微服务网关,你选谁?
微服务网关,你选谁?

Traefik

Traefik 是一个现代 HTTP 反向代理和负载均衡器,可以轻松部署微服务

它可以与您现有的组件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,并自动动态配置。

Ambassador

Ambassador是一个基于envoy proxy构建的,kubernetes原生的开源微服务网关。Ambassador在构建之初就致力于支持多个独立的团队,这些团队需要为最终用户快速发布、监控和更新服务。Ambassador还可以用来处理Kubernetes ingress和负载均衡的能力。

Ambassador依靠Kubernetes实现扩展、高可用性和持久性。所有Ambassador配置都直接存储在Kubernetes中(etcd);没有数据库。Ambassador被打包成一个单独的容器,其中包含控制平面和一个Ambassador代理实例。默认情况下,Ambassador部署为kubernetes deployment,可以像其他kubernetes deployment一样进行扩展和管理。

Tyk

Tyk是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全 RESTful API。基于 go 编写。

微服务网关,你选谁?

Zuul

Zuul 是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。Zuul 是 Netflix 出品的一个基于 JVM 路由和服务端的负载均衡器。Zuul是Spring Cloud全家桶中的微服务API网关。

继续阅读