【问题标题】:How to listen two micro services on same port in Node.js如何在 Node.js 中监听同一端口上的两个微服务
【发布时间】:2016-11-19 01:41:53
【问题描述】:

我是微服务的新手。我想创建一个具有两个微服务的应用程序。但我不知道如何在同一个端口上监听两个(或多个)微服务以使其成为一个应用程序。 网上有什么好的教程页面吗?请向我推荐任何博文或教程页面,或者帮助我创建一个包含两个微服务的应用程序。

我正在尝试创建一个具有两项服务的巴士预订应用程序,

  1. 巴士服务(提供巴士名称和可用性)
  2. 用户服务(提供用户详细信息并将其与总线连接)。

我创建了两个 this 作为两个 nodejs 应用程序。现在我需要知道如何将这两者结合为一个应用程序(与微服务)。因为我无法将其监听到一个端口。

【问题讨论】:

  • 如果你的微服务是独立的进程,那么你不能让多个进程监听同一个端口。您可以让一个进程监听主端口,然后将相关信息转发给其他两个进程。如果您的微服务不是单独的进程,请在您的问题中添加更多信息来描述您的架构。
  • @jfriend00 用于使用 node.js 练习微服务。我正在网上搜索 nodejs 微服务教程。但我没有在线获得任何教程。
  • 在我们提供帮助之前,我们需要知道您使用的是什么微服务架构。您之前的评论根本无法解释这一点。
  • 请求第三方库或教程被认为是堆栈溢出的题外话,并且是不允许的。这里的总体思路是,您将一个特定问题描述得足够好,以使人们能够准确地理解您正在尝试做什么,然后描述您到目前为止所做的事情以及您遇到困难的地方,并就您需要什么帮助提出一个具体问题和。这不是“我如何做 X?”的合适网站。当您尚未进行大量研究、研究自己的解决方案并且现在正在就您目前所做的工作寻求具体帮助时。
  • 谢谢@jfriend00。我的问题是如何在同一个端口监听微服务。

标签: node.js microservices


【解决方案1】:

如果您要使用一个端口,则需要有一种方法来区分每个端口的请求。如果它们以前仅由端口号标识(而不是,例如,每个具有不同的路径或域),您将不得不以某种方式更改访问 URL(或标头)。

鉴于此,您可以使用 npm 模块 express,通过解释请求轻松区分任意数量的请求类型。

你可能有:

service1.com 和 service2.com 都指向 xxx.xxx.xxx.xxx:2020。您可以通过检查请求对象来区分它们。

例如,

app.get(/.*/, function(request, response, next){
switch(request.headers.host){
    case 'service1.com':
        //some stuff
    break;
    case 'service2.com':
        //some stuff
    break;
}
});

或者,如果是 domain.com/service1 和 domain.com/service2

app.get(/service1/, function(){/*some stuff*/});
app.get(/service2/, function(){/*some stuff*/});

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2017-11-10
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多