Microservices 与香港相比,克拉肯德有多好?
Microservices 与香港相比,克拉肯德有多好?,microservices,api-gateway,kong,spring-cloud-gateway,krakend,Microservices,Api Gateway,Kong,Spring Cloud Gateway,Krakend,我一直在从下面提到的三个API网关中选择一个API网关:
克拉肯德()
孔()
Spring云网关()
我的要求是:
性能良好,必须具备大多数API网关功能
支持聚合来自两个不同微服务API的数据
从功能列表和性能方面来看,这三个功能都不错。
我正在考虑放宽第二个要求,因为我不确定这是否是一个好的做法。API网关是一个用于所有类型产品的概念,我真的认为业界应该开始对这些产品进行细分,因为它们中的大多数彼此完全不同
我将根据您的要求在这里总结主要亮点
Kong和KrakenD都提供“大部分”API
我一直在从下面提到的三个API网关中选择一个API网关:
克拉肯德()
孔()
Spring云网关()
我的要求是:
性能良好,必须具备大多数API网关功能
支持聚合来自两个不同微服务API的数据
从功能列表和性能方面来看,这三个功能都不错。
我正在考虑放宽第二个要求,因为我不确定这是否是一个好的做法。API网关是一个用于所有类型产品的概念,我真的认为业界应该开始对这些产品进行细分,因为它们中的大多数彼此完全不同
我将根据您的要求在这里总结主要亮点
Kong和KrakenD都提供“大部分”API网关功能。虽然这个词很模糊,但至少所有这些词都包括路由、速率限制、授权等内容
香港
Kong基本上是一个Nginx代理,它使用Lua在上面添加了很多功能
使用Kong时,端点与后端的关系为1:1。意思是在Kong中声明一个端点,它从一个后端公开数据,并在中间做魔术(授权、限制等)。这种魔力是Kong的精髓,它基于Lua插件(不幸的是,这些插件不像Nginx那样用C编写)
如果要将多个后端的数据聚合到一个端点中,则Kong不适合您的场景
最后,香港是一个富于状态的国家(令人印象深刻的是,他们试图以另一种方式出售它,但这超出了这个问题的范围)。配置存在于数据库中,对配置的更改是通过一个API完成的,该API最终会修改其内部Postgre或等效项
性能也不可避免地与该数据库(和Lua)的存在联系在一起,而跨区域可能是一个真正的难题
Kong功能可以使用Lua代码进行扩展
总之:
- 具有交叉关注点的代理
- 节点需要协调和同步
- 可变配置
- 数据库是真相的来源
- 作品越多,就越复杂
- 多区域滞后
- 需要强大的硬件才能运行
- Lua中的定制
克拉肯德
KrakenD是一个使用Go从头编写的服务,它利用了语言的并发性、速度和占用空间小的特点。就性能而言,这是一匹获胜的赛马
克拉肯德的自然定位是作为一个聚合的门户。它意味着将许多后端服务连接到单个端点。它主要被公司用于为移动应用程序、网络应用程序和其他客户提供服务。它实现了前端的模式后端,允许您使用声明性配置准确地定义要向客户机公开的API。您可以选择从响应中获取哪些字段、聚合它们、验证它们、转换它们,等等
KrakenD是无状态的,您可以使用git以与其他代码相同的方式对API进行版本设置。您可以使用与应用程序相同的方式部署它(例如:一个CI/CD管道,它使用新配置推送一个新容器,并将其推出)。由于所有内容都在配置中,因此不需要中央数据库,也不需要节点之间进行通信
根据定制,使用KrakenD,您可以创建中间件、插件或仅使用几种语言编写脚本:Go、Lua、Common Expression Language(CEL)——类似于JS——和火星DSL
总之:
- 使用上游服务动态创建API,带有横切关注点(API网关)
- 不是代理,尽管它可以用作代理
- 无节点协调
- 不需要同步
- 零复杂性(带有配置文件的docker容器)
- 多地区无挑战
- 声明性配置
- 不变的基础设施
- 在生产中的微型和小型机器上运行,没有问题
- Go、Lua、CEL和火星DSL中的定制
春云之门
(以及)主要由希望留在JVM空间的Java开发人员使用。我对这个不太熟悉,但它的设计也是为了代理现有的服务,这也增加了API网关的交叉关注点
我认为它更像是一个用于交付API的框架。使用此产品,您需要自己用Java编写转换代码。所包含的网关功能也是声明性的
--
我希望这能给我一些启示我使用金刚的唯一和主要障碍是你只能用LUA扩展金刚。世界上只有一小部分开发人员熟悉LUA。这就是我选择KrakenD的原因。您选择了什么?我认为值得注意的是,当您更改配置时,KrakenD需要重新启动,没有热重新加载。有一种方法,如果配置文件发生更改,它将自动重新启动,请参见@tobiaserikson。与其他服务器一样,更改配置需要重新启动服务。它认为现在没有任何问题(例如:蓝色/绿色部署),我建议不要使用生产链接中描述的系统。