使用 API 网关 Ocelot 与 Nginx 的微服务
Posted
技术标签:
【中文标题】使用 API 网关 Ocelot 与 Nginx 的微服务【英文标题】:Micro Service with API Gateway Ocelot vs Nginx 【发布时间】:2020-12-16 07:39:21 【问题描述】:我有一个基于 .net 核心的微服务架构。 我选择了ocelot作为api网关。我的前端应用程序基于 vue js 并托管在 nginx 容器上。今天在讨论中得知nginx已经可以作为网关使用了,有人建议“你应该使用nginx作为网关,因为你已经使用了服务前端,nginx也可以部署为网关”我搜索了互联网比较这两个网关(我知道 nginx 的主要目的不是网关),但找不到任何有关它们优缺点的信息,例如性能、可扩展性可用性等...
使用这两种技术的人能否与我分享我应该选择哪一种技术的信息?
【问题讨论】:
【参考方案1】:Ocelot 是 .NET API 网关,但与云无关。它具有article here 中提到的以下功能。它是一个免费的简单 Nuget 包,用于简单安装,没有太高级的功能或性能要求,但它总是在 .net 环境中完美地完成这项工作,并且还提供了一些功能。它是轻量级、快速、可扩展的,除了所有网关功能外,还提供路由和身份验证。在 Azure 上,Azure API 管理提供了这些功能以及许多更高级的网关功能。
NGinx 有开源版和加号版。
NGINX 是一款高性能、可扩展、安全且可靠的 Web 服务器 和反向代理。 NGINX 支持所有主要的 Web 加速 管理 HTTP 连接和流量的技术。很多年了, NGINX 功能,例如负载平衡、SSL 终止、连接 请求监管、静态内容卸载和内容缓存具有 帮助NGINX用户快速搭建可靠、快速的网站 高效。
NGINX 还可以充当安全的应用程序网关,提供许多专用的内置接口来将流量从用户传递到应用程序。因此,正如您所见,NGinx 不仅仅是一个 API 网关。借助服务器,您可以集成许多其他服务,例如流量分配、策略、监控、警报、通知、自定义配置等。Ocelot 对于企业级应用程序的性能或可配置性可能有限。
Nginx 是与 Ocelot 不同的软件。 Kong on NGinx is more popular software for API management gateway and is not .NET specific.
如果您的公司已经在使用它,并且已经准备好进行部署,您应该继续使用 Nginx。
Ocelot vs Kong vs Azure API management vs Nginx
在正常情况下,Ocelot 可能会出现比 Nginx 更好的软件。但是 Nginx 是一个成熟的软件。几个原因:您的公司已经拥有 Nginx plus 的许可证,为什么要使用其他软件进行 API 管理。湾。 Nginx 可配置以获得高性能,而 ocelot 则不然。 If you use thread pool is nginx, performance can be tuned.Ten Nginx performance tuning tips.。在 Ocelot 中,您可以做的仅限于此类事情。它有它的own bunch of open issues 作为网关。 NGinx plus 用户将接受培训以及现有的团队支持。 Nginx 将成为您所有应用程序的一个 API 网关(独立于技术)。 Ocelot 依赖于技术。鉴于利弊,您的公司可能已经拥有 Nginx plus 许可证和用于多个应用程序的通用 API,这就是他们可能会推动它的原因。
【讨论】:
感谢您的回答。但我需要对性能和其他方面进行技术比较。我知道你说的一切。我需要这样的信息,比如 Nginx 比 Ocelot 快 2 倍,或者 Nginx 更具可扩展性。因为我们已经实现了ocelot。为什么要迁移到 Nginx【参考方案2】:首先,Nginx 和 Ocelot 是非常不同的软件。 使用 Nginx 最终将对您的基础设施有好处,因为它可以用作 API 网关,而且它是开源的、安全的,并提供许多其他好处。
从长远来看,使用 Ocelot 会有缺点。您需要额外处理一个软件。为什么要在这上面浪费时间?并且开发者需要了解它们。
我建议你使用 Nginx,因为它已经实现并完成你的工作
【讨论】:
以上是关于使用 API 网关 Ocelot 与 Nginx 的微服务的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure Active Directory 设置 Ocelot Api 网关
记录一次Nginx转发请求给Ocelot网关响应500错误排查