网关

why:

  随着微服务的兴起,基于其业务耦合性低、负载能力强、服务边界清晰等优点,大家纷纷使用微服务架构来实现新系统或进行老系统的改造。微服务在带来诸多好处的同时,也有一些问题需要解决,比如:如何做到有效拆分、减少服务间调用,如何统一管理所有服务的接口,如何进行自动化部署等。本文阐述微服务的API网关的一些主要功能,并例举了几种常用的网关,最后结合spring cloud微服务框架对网关做一些简要的论述。

 

what:

  API网关,顾名思义,是统一管理API的一个网络关口、通道,是整个微服务平台所有请求的唯一入口,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。下图为微服务架构的简单示意图,网关起到的作用一目了然。

how:

  为微服务云平台提供统一的入口是API网关最主要的用途,除此之外,网关还可承担认证授权、访问控制、路由、负载均衡、缓存、日志、限流限额、转换、映射、过滤、熔断、注册、服务编排、API管理、监控、统计分析等等非业务性的功能。

  

 

  所以实现或者选择一个好的API网关,是建设容器云和微服务体系中一个至关重要的事项。这也决定了API网关的部署,要尽可能的减少接触面,确保安全。下面介绍几个API网关的核心功能。

 

 

 

 

 

 

 

 

 

 

 

 

常见的几种api网关

  目前比较常见的几种开源的API网关有以下几种:Kong、Treafik、Ambassador、Tyk、Zuul ,下面对这几种网关做一下简单的介绍和对比。
  Kong是一个在 Nginx 中运行的Lua应用程序,并且可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与 OpenResty 一起发布,OpenResty已经包含了lua-nginx-module,OpenResty不是Nginx的分支,而是一组扩展其功能的模块。
它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。
  Traefik是一个现代HTTP反向代理和负载均衡器,可以轻松部署微服务,Traeffik 可以与您现有的组件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,并自动动态配置。
  Ambassador是一个开源的微服务 API 网关,建立在 Envoy 代理之上,为用户的多个团队快速发布,监控和更新提供支持,支持处理 Kubernetes ingress controller 和负载均衡等功能,可以与 Istio 无缝集成。
  Tyk是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全RESTful API。基于go编写。
  Zuul是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。Zuul 是Netflix出品的一个基于JVM路由和服务端的负载均衡器。

 

 

 

 

  由上述对比表格中可以看出:从开源社区活跃度来看,无疑是Kong和Traefik较好;从成熟度来看,较好的是Kong、Tyk、Traefik;从性能角度来看,Kong要比其他几个领先一些;从架构优势的扩展性来看,Kong、Tyk有丰富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由于与Spring Cloud深度集成,使用度也很高,近年来Istio服务网格的流行,Ambassador因为能够和Istio无缝集成也是相当大的优势。

spring cloud
目前能和spring cloud体系紧密集成的有两种API网关:zuul(zuul1)和spring cloud gateway。zuul网关再上面有提到,spring cloud gateway是spring官方推出的用于替代zuul的新组建。这里对于如何集成zuul或spring cloud gateway不做讲述,只对这两种网关做一个简单的阐述与比较。

 

  关联文档:https://blog.csdn.net/nsxqf/article/details/90679742

  

 

posted @ 2022-01-11 16:14  修心而结网  阅读(717)  评论(1编辑  收藏  举报