Krakend与Kong相比有多好?

问题描述 投票:0回答:1

我被迫从下面提到的三个API网关中选择一个API网关:

  1. KrakenD(https://www.krakend.io/
  2. Kong(https://konghq.com/kong/
  3. Spring Cloud Gateway(https://cloud.spring.io/spring-cloud-gateway/reference/html/

我的要求是:

  1. 良好的性能,并且必须具有大多数API网关功能。
  2. 支持从两个不同的微服务API汇总数据。

它们全部三个,从功能列表和性能方面来看都不错。我不确定,这是否是一种好习惯,我想放宽第二个要求。

microservices api-gateway kong spring-cloud-gateway krakend
1个回答
0
投票

API Gateway是用于所有产品的概念,我真的认为行业应该开始对这些产品进行子分类,因为它们中的大多数彼此完全不同。

我将根据您的要求在这里总结主要要点。

Kong和KrakenD都提供了API网关功能的“多数”。尽管这个词很模糊,但至少它们全部涵盖诸如路由,速率限制,授权等内容。

Kong

Kong基本上是一个Nginx代理,它使用Lua在其之上添加了很多功能。

使用Kong时,您的端点与后端具有1:1的关系。这意味着您在Kong中声明一个端点,该端点公开来自一个后端的数据,并在中间进行操作(授权,限制等)。这种魔力是Kong的本质,它基于Lua插件(不幸的是,它们不像Nginx那样用C编写)。

如果要将多个后端的数据聚合到一个端点中,则Kong不适合您的情况。

最后,Kong是stateful(他们如何尝试以其他方式出售它令人印象深刻,但这不在此问题的范围内)。该配置位于数据库中,并且通过API对该配置进行更改,该API最终修改了其内部Postgres或等效版本。

性能也不可避免地与该数据库(和Lua)的存在联系在一起,而进入多区域可能是一个真正的痛苦。

Kong功能可以用Lua代码扩展。

摘要:-具有跨领域关注的代理-节点需要协调和同步-可变配置-数据库是真理的源头-更多作品,更复杂-多区域滞后-需要强大的硬件才能运行-Lua中的自定义

KrakenD

KrakenD是一项使用Go从头开始编写的服务,它充分利用了并发,速度和占用空间小的语言功能。就性能而言,这是获胜的赛马。

KrakenD的自然定位是作为具有聚合功能的网关。这意味着将许多后端服务连接到单个端点。公司主要采用它来提供移动应用程序,Webapps和其他客户端。它实现了Backend for Frontend模式,使您可以准确地定义并使用声明式配置来向客户端公开API。您可以选择从响应中获取哪些字段,对其进行汇总,对其进行验证,对其进行转换等。

KrakenD is stateless,您使用git对API的其余部分进行版本化。然后以与应用程序相同的方式部署它(例如:CI / CD管道,该管道使用新配置推送新容器并推出)。因为所有内容都在配置中,所以不需要中央数据库,两个节点都不需要相互通信。

根据定制,您可以使用KrakenD创建中间件,插件或仅使用以下几种语言编写脚本:Go,Lua,通用表达语言(CEL)-JS-和Martian DSL。

摘要:-使用具有跨领域关注点的上游服务动态创建API(API网关)。-不是代理,尽管可以用作代理。-无节点协调-无需同步-零复杂度(带有配置文件的docker容器)-多区域无挑战-声明式配置-不变的基础设施-在生产中的微型和小型机器上运行不会出现问题。-Go,Lua,CEL和Martian DSL中的自定义]

Spring Cloud Gateway

(以及Zuul)通常由希望坚持JVM空间的Java开发人员使用。我对此不太熟悉,但是它的设计还用于代理现有服务,还增加了API网关的交叉关注。

我将其更多地看作是用于提供API的框架。使用此产品,您需要自己用Java编写转换代码。包含的网关功能也具有声明性。

-

我希望这能阐明一些信息

© www.soinside.com 2019 - 2024. All rights reserved.