集中网关系列

APIGateway

在学习 APIGateway 之前,首先应该清楚一些我们经常谈论或者平时使用的技术概念

1. SOA 与 ESB

关于 SOA 与 ESB 的概念和它们之间的关系有不同的版本

SOA ---- 是一种面向服务架构的思想,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,它指的不是具体的技术,是一种通过服务整合来解决系统集成的一种策略。有不同的实现方式。

ESB ---- 企业服务总线,有一种比较有意思的说法,它像一根“聪明”的管道,用来连接各个“愚笨”的节点。为了集成不同系统,不同协议的服务,ESB 做了消息的转换解释与路由等工作,让不同的服务互联互通。

理解ESB在SOA中的作用:
ESB的确是SOA中一个非常重要的集成层组件(Integration Layer),几大主流SOA供应商,都将ESB置于SOA架构的核心位置。ESB在SOA中扮演着重要的角色,在技术层解决了SOA的整合问题,耦合了应用与应用之间的集成逻辑,使得SOA更灵活,更易于扩展,更敏捷。有了ESB,新建的服务消费者应用程序不需要关心服务的提供者在哪里,使用何种通讯协议,与其交互的数据是怎样的……,它只需向ESB发出请求,使用开放的、标准的通讯协议。相反,若某个可重用的价值较大的服务位于某一个遗留系统中,而由于种种原因,该遗留系统不能在短期内重写,此时ESB可以架起该服务与其使用者之间沟通的桥梁。当然,ESB的作用远不止这些,业内也有很多讨论。

2. APIGateway

APIGateway,这实际上微服务架构里面的很重要的内容,其作用类似于传统企业内部的 ESB 服务总线,只是更加轻量和高性能来解决微服务的管控和治理问题。而对于负载均衡,缓存,路由,访问控制,服务代理,监控,日志等都属于基本的服务管控内容,也是 APIGateway 需要考虑的核心能力。

APIGateway 是一个服务器,是调用服务的唯一节点和请求应答出入口。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。通常情况下它还需要实现其他功能,如认证授权、访问控制、路由、负载均衡、缓存、日志、限流限额、转换、映射、过滤、熔断、注册、服务编排、API管理、监控、统计分析等等。

从API网关的能力来看,我们可以理解其重要性。一夫当关,万夫莫开。API网关就承担这么一个重要的职责。其不但是整个服务系统的安全屏障,也承担着很多服务治理的能力。所以实现或者选择一个好的API网关,是建设容器云和微服务体系中一个至关重要的事项。这也决定了API网关的部署,要尽可能的减少接触面,确保安全。


image.png

举个例子:
假设我们以前的微服务架构是这样的:我们有 customer 模块、order 模块、Invoices 模块,那么,客户端就不得不去请求 Customers,然后再到 Orders,然后是 Invoices。客户端需要去知道怎么去一起来消费这三个不同的 service。


image.png

那么我们可以将 API 网关放到我们的微服务们的最前端,并且让API 网关变成由应用所发起的每个请求的入口。这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式。使用API网关,我们可以抽象所有这些复杂性,并创建客户端们可以使用的优化后的端点,并向那些模块们发出请求。如果我们假设客户(Customers),订单(Orders)和发票(Invoices)每个模块都返回不同的JSON响应,并且假设客户端想要检索此信息。有两种方法。一种方式是,客户端向客户(Customers)模块发出 GET 请求以检索客户,然后到订单(Orders),然后到指定订单的发票(Invoices)。第二种方式是我们可以通过使用API网关来抽象此客户端实现的复杂性。然后,API网关可以公开一个特定的端点,在这个端点上将产生请求,然后在[网关]消费了微服务之后返回给客户端一个唯一的响应(response)。也就是说,比如,我们可以把很多的 response 折叠成一个,request 也是一个。

这样对我们帮助很大,而且特别是对于手机等其他移动客户端来说特别的受益。这样就可以加速我们的客户端的实现。而且可以轻松的做一些替换。

API网关让我们的客户端不用再需要知道和关心模块的地址了。网关负责来搞这些事情,你只需要知道网关就好了。你可以去改变实现而且还可以改变API接口。不过通常来说,你改变接口后,会增加客户端出问题的风险。

使用API网关后,你可以在单独的层上有效地抽象,这样你就可以更改实现和接口,同时保持现有客户端的公共接口相同。这意味着你总是可以做一些调整的事情。

此外,APIGateway 还可以实现一些附加功能,如身份验证、监控、负载均衡、缓存、报文转换、蓝绿部署、金丝雀发布、断路器等。

3. APIGateway 产品

越来越多的企业采用微服务,越来越多的人认识到微服务API网关的重要性,API网关的发展和完善也越来越好。很多开源的产品功能也很强大,足以满足大部分企业的部署需求。基于这些开源产品,可以定制扩展一些功能,更好的满足业务需求。还有一些比较好用的

Tykhttps://tyk.io/)是一个开放源码的API网关、面板和API管理平台,由Tyk公司开发和支持。Try 是一个基于Go实现的网关服务。包括Tyk API Gateway,Tyk Dashboard, Tyk Developer Portal, Tyk Pump, Tyk Identity Broker等组件。Tyk开源 API Gateway 对实际上的请求管理做了重大的提升:路由、访问控制、数据转换、日志等等。Tyk 可以完全独立运行,只需要有效的 Redis 数据库,可以横向扩展(如下图)

image.png

Kong(https://getkong.org/)是一款基于Nginx_Lua模块写的高可用,易扩展的开源的 API Gateway 项目。Kong 在任何RESTful API的前面运行,通过插件扩展,它提供了超越核心平台的额外功能和服务。由于 Kong 是基于 Nginx 的,所以可以水平扩展多个 Kong 服务器,通过前置的负载均衡配置把请求均匀地分发到各个 Server,来应对大批量的网络请求。

Kong主要有三个组件:

  • Kong Server :基于nginx的服务器,用来接收 API 请求。
  • Apache Cassandra/PostgreSQL :用来存储操作数据。Cassandra 是最终一致的数据库。 这意味着如果你有一个由多个节点组成的 Cassandra 集群,你存储数据的话,则最终该数据将传播到所有其他节点 – 但不是同时[或“立即”]到达每个节点。
  • Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。

Kong 采用插件机制进行功能定制,插件集(可以是0或n个)在API请求响应循环的生命周期中被执行。插件使用 Lua 编写,目前已有几个基础功能:HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 nginx 监控。

Zuul 是 Netflix 出品的一个基于JVM 路由和服务端的负载均衡器。它的主要功能有:认证、动态路由、监视、弹性、压力测试、金丝雀测试、负载削减、安全、静态响应处理和主动/主动交换管理。被用来作为上 Spring Cloud 的 API 网关组件,可以和 spring cloud 的各个组件结合使用。

image.png

就像上图中所描述的一样,Zuul 提供了四种过滤器的 API,分别为前置(Pre)、后置(Post)、路由(Route)和错误(Error)四种处理方式。

一个请求会先按顺序通过所有的前置过滤器,之后在路由过滤器中转发给后端应用,得到响应后又会通过所有的后置过滤器,最后响应给客户端。在整个流程中如果发生了异常则会跳转到错误过滤器中。

一般来说,如果需要在请求到达后端应用前就进行处理的话,会选择前置过滤器,例如鉴权、请求转发、增加请求参数等行为。在请求完成后需要处理的操作放在后置过滤器中完成,例如统计返回值和调用时间、记录日志、增加跨域头等行为。路由过滤器一般只需要选择 Zuul 中内置的即可,错误过滤器一般只需要一个,这样可以在 Gateway 遇到错误逻辑时直接抛出异常中断流程,并直接统一处理返回结果。

还有两个可以提供 API 网关的产品:
axway
axway API Gateway 服务可以管理,交付和保护企业 API、应用程序和消费者。 以下概述图显示了左侧API网关支持的传输和协议范围,以及它在右侧提供的服务:

image.png

Axway API Gateway 支持的主要服务:
1)API转换
2)API 控制和治理
3)API 安全性
4)API 监控
5)API 开发生命周期
6)API 管理
API Gateway 为 API 提供应用程序服务器为应用程序所做的工作。 此 API网关角色作为核心应用程序基础结构如下所示:
image.png

API 网关可以看作是 API 运行时环境,它提供以下核心服务:
1)安全性(例如,身份验证和授权)
2)与一系列不同协议的连接
3)虚拟化
4)可扩展性和弹性
5)高可用性
6)可管理性(例如,使用API​​网关管理器)
7)容易部署
由于 API 网关提供此核心API基础结构,因此开发人员可以专注于提供应用程序逻辑。他们不再需要将这些服务构建到他们的应用程序中,并且可以利用 API 网关提供的核心基础结构。API Gateway 将 API 视为第一类工件,具有自己的特定构造和自己的运行时环境。
MuleSoft

https://www.cnblogs.com/Leo_wl/p/3417948.html
http://cloud.idcquan.com/yjs/148607.shtml
http://blog.didispace.com/hzf-ms-apigateway-1/
https://www.scienjus.com/api-gateway-and-netflix-zuul/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容

  • 我们自己的人生要自己做主,过我们想过的人生,成为自己的主人。
    青纱挽歌阅读 307评论 0 1
  • 我的科室主任是个风风火火的人,来去总是匆匆忙忙的。“小G来帮我做个事儿,很紧急。”“小Y,有人咨询业务,赶紧回个电...
    筱筱宇下阅读 192评论 0 0
  • 最近自己看了许多部古龙的武侠小说,主要有小李飞到四部曲,小李飞刀,九月鹰飞,,边城浪子,天涯明月刀,飞刀又...
    指尖的回忆阅读 804评论 0 1