RESTful API 在同一服务器上与 NodeJS 之间的通信
Communication between RESTful API's on same server with NodeJS
我正在一个网站上构建两套服务(都是在服务器上用 NodeJS 编写的),两者都使用 RESTful 方法。为了模块化,我决定将这两个服务分开。第一项服务处理网站的产品,第二项服务专门处理与用户相关的功能。所以第一个可能具有 getProducts、deleteProduct 等功能...第二个可能具有 isLoggedIn、register、hasAccessTo 等功能...产品模块将对用户模块进行多次调用,以确保进行调用的人有这样做的特权。
之所以将它们分开,是因为我预见到在不久的将来会开放一个单独的产品系列,但需要使用与第一个相同的用户系统(甚至共享相同的数据库)。用户系统将使用跨越整个站点和所有后续产品的数据库
我的问题是关于这些项目与用户项目之间的通信。在不遭受任何显着速度影响的情况下保持用户模块分离的最有效方法是什么。如果产品 API 在同一台服务器 (localhost) 上调用用户 API,与将用户 API 构建到每个后续项目相比,这样做是否有显着成本?有没有更好的方法通过进程间通信来做到这一点?简单地让用户 API 运行 作为自己的服务是一个有效的解决方案吗?
如果您在同一台服务器(机器)上有两个节点,那么您在网络延迟方面的表现还不错,因为它们都在本地主机上。
然后,节点将使用 rest api 进行通信,因此在地下,您将使用节点 js 套接字。您可以使用 unix 套接字而不是 http 套接字,因为速度更快但调试起来最差,所以我建议您不要那样做(但知道替代方案也没关系)。
最后,您的系统看起来像 "actor design pattern"。乍一看这个设计模式有点难以理解,但如果你想了解更多关于 actor 模型模式的信息,你可以看看这个:
- NodeJS 的 Actor 模型 https://github.com/benlau/nactor
- Actor模型解释http://en.wikipedia.org/wiki/Actor_model
我正在一个网站上构建两套服务(都是在服务器上用 NodeJS 编写的),两者都使用 RESTful 方法。为了模块化,我决定将这两个服务分开。第一项服务处理网站的产品,第二项服务专门处理与用户相关的功能。所以第一个可能具有 getProducts、deleteProduct 等功能...第二个可能具有 isLoggedIn、register、hasAccessTo 等功能...产品模块将对用户模块进行多次调用,以确保进行调用的人有这样做的特权。
之所以将它们分开,是因为我预见到在不久的将来会开放一个单独的产品系列,但需要使用与第一个相同的用户系统(甚至共享相同的数据库)。用户系统将使用跨越整个站点和所有后续产品的数据库
我的问题是关于这些项目与用户项目之间的通信。在不遭受任何显着速度影响的情况下保持用户模块分离的最有效方法是什么。如果产品 API 在同一台服务器 (localhost) 上调用用户 API,与将用户 API 构建到每个后续项目相比,这样做是否有显着成本?有没有更好的方法通过进程间通信来做到这一点?简单地让用户 API 运行 作为自己的服务是一个有效的解决方案吗?
如果您在同一台服务器(机器)上有两个节点,那么您在网络延迟方面的表现还不错,因为它们都在本地主机上。 然后,节点将使用 rest api 进行通信,因此在地下,您将使用节点 js 套接字。您可以使用 unix 套接字而不是 http 套接字,因为速度更快但调试起来最差,所以我建议您不要那样做(但知道替代方案也没关系)。
最后,您的系统看起来像 "actor design pattern"。乍一看这个设计模式有点难以理解,但如果你想了解更多关于 actor 模型模式的信息,你可以看看这个:
- NodeJS 的 Actor 模型 https://github.com/benlau/nactor
- Actor模型解释http://en.wikipedia.org/wiki/Actor_model