站务联系

使用 Node.js 搭建一个 API 网关(助力微服务)

发布时间:2021-04-09   来源:网络整理    
字号:

外部客户端访问微服务构架中的服务时,服务端会对认证跟传输有一些常见的要求。API 网关提供共享层来处理服务合同之间的差距,并满足特定客户端(如桌面浏览器、移动设备跟老系统)的要求。

微服务跟消费者

微服务是面向服务的构架,团队可以独立设计、开发跟公布应用程序。它容许在系统各个层面上的技术多样性,团队可以在给定的技术瓶颈中使用最佳语言、数据库、协议跟传输层,从而获益。例如,一个团队可以使用HTTP REST上的 JSON,而另一个团队可以使用HTTP/2上的 gRPC 或 RabbitMQ 等消息代理。

在这些状况下使用不同的数据序列化跟合同或许是强悍的,但要使用我们的产品的顾客或许有不同的需求。该问题也或许发生在具备同质技术栈的系统中,因为顾客可以从桌面浏览器通过联通设备跟游戏机至遗留系统。一个顾客或许期望 XML 格式,而另一个顾客或许希望 JSON 。在许多状况下,你还要同时支持他们。

当顾客想要使用你的微服务时,你可以面对的另一个挑战来自于通用的共享逻辑(如身分验证),因为你不想在所有服务中再次实现相似的事情。

总结:我们不想在我们的微服务构架中实现我们的内部服务,以支持多个客户端并可以重复使用相似的逻辑。这就是 API 网关出现的病因,其作为共享层来处理服务合同之间的差距并满足特定客户端的要求。

什么是 API 网关?

API 网关是微服务构架中的一种服务,它为客户端提供共享层跟 API,以便与内部服务进行通讯。API 网关可以进行路由恳求、转换合同、聚合数据以及实现共享逻辑,如认证跟速度限制器。

你可以将 API 网关视为我们的微服务世界的入口点。

我们的系统可以有一个或多个 API 网关,具体取决于顾客的需求。例如,我们可以为桌面浏览器、移动应用程序跟公共 API 提供单独的网段。

使用 Node.js 搭建一个 API 网关(助力微服务)

API 网关作为微服务的切入点

Node.js 用于后端团队的 API 网关

由于 API 网关为客户端应用程序(如浏览器)提供了功能,它可以由负责开发后端应用程序的团队推行跟管理。

这也意味着用哪种语言实现 API Gateway 应由负责特定顾客的团队选择。由于 JavaScript 是开发浏览器应用程序的主要语言,即使你的微服务架构以不同的语言开发,Node.js 也可以成为实现 API 网关的极佳选择。

Netflix 成功地使用 Node.js API 网关及其 Java 后端来支持广泛的客户端微端服务器,如果想要了解更多关于他们的技巧,可以瞧瞧这篇文章 The "Paved Road" PaaS for Microservices at Netflix

使用 Node.js 搭建一个 API 网关(助力微服务)

使用 Node.js 搭建一个 API 网关(助力微服务)

认证方法

大多数微服务基础构架都还要处理身分验证。将身分验证之类的共享逻辑放到API网段可以帮助你缩小服务的容积并专注管理域。

图说天下

×
二维码生成