【问题标题】:Communication between RESTful API's on same server with NodeJS使用 NodeJS 在同一服务器上的 RESTful API 之间的通信
【发布时间】:2015-07-19 04:17:02
【问题描述】:

我正在一个网站上构建两组服务(都在服务器上用 NodeJS 编写),它们都使用 RESTful 方法。为了模块化,我决定将这两个服务分开的实体。第一项服务处理网站的产品,第二项服务专门处理与用户相关的功能。所以第一个可能有 getProducts、deleteProduct 等函数……第二个可能有 isLoggedIn、register、hasAccessTo 等函数……产品模块将对用户模块进行多次调用,以确保拨打电话的人有这样做的特权。

现在我这样分开它们的原因是因为在不久的将来我预计会开放一个单独的产品范围,但需要使用与第一个相同的用户系统(甚至共享相同的数据库)。用户系统将使用跨越整个站点和所有后续产品的数据库

我的问题是关于这些项目和用户项目之间的沟通。什么是保持用户模块分开而不遭受任何显着速度影响的最有效方法。如果产品 API 在同一服务器(本地主机)上调用用户 API,与将用户 API 构建到每个后续项目中相比,这样做是否会产生重大成本?有没有更好的方法通过进程间通信来做到这一点?让用户 API 作为自己的服务运行是一种有效的解决方案吗?

【问题讨论】:

    标签: node.js server ipc


    【解决方案1】:

    如果你在同一台服务器(机器)上有两个节点,那么你在网络延迟方面的表现还不错,因为它们都在本地主机上。 然后,节点将使用 rest api 进行通信,因此在地下,您将使用节点 js 套接字。您可以使用 unix 套接字而不是 http 套接字,因为速度更快,但调试起来最糟糕,所以我建议您不要这样做(但可以知道替代方案)。

    最后,您的系统看起来像“演员设计模式”。乍一看,这种设计模式有点难以理解,但如果你想了解更多关于 Actor 模型模式的信息,可以看看这个:

    【讨论】:

    • 谢谢 Jose,您对套接字通信有什么建议吗? socket.io 会成为套接字通信的有效库吗?
    • 您可以在两个节点之间使用 socket.io,但乍一看可能有点棘手。我的首选是打包 npm "request" (npmjs.com/package/request) 或使用原生 xhr。无论如何,您可以在本地机器上使用 socket.io 测试实现,并使用“apache benchmark [ab]”请求以了解如何更快地响应请求。
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2013-08-21
    • 2012-12-28
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多