我在网站上构建了两套服务(都是在服务器上用NodeJS编写的),两者都使用RESTful方法。为了模块化,我决定将两个服务分开。第一项服务涉及网站的产品,第二项服务涉及用户相关的功能。所以第一个可能有getProducts,deleteProduct等函数......第二个函数有isLoggedIn,register,hasAccessTo等函数......产品模块会多次调用用户模块,以确保拨打电话的人有这样做很有特权。
现在我将它们分开的原因是因为在不久的将来我预见到一个单独的产品系列开放,但需要使用与第一个相同的用户系统(甚至共享相同的数据库)。用户系统将使用跨越整个站点和所有后续产品的数据库
我的问题是这些项目与用户项目之间的沟通。什么是保持用户模块分离而不会遭受任何显着速度命中的最有效方法。如果产品API在同一服务器(localhost)上调用了用户API,那么是否需要花费相当大的成本,而不是在每个后续项目中构建用户API?有没有更好的方法通过进程间通信来做到这一点?只是让用户API作为自己的服务运行一个有效的解决方案吗?
答案 0 :(得分:2)
If you have two nodes on same server (machine) then you have not bad performance in terms of network latency because both are on localhost. Then, nodes will be communicating using a rest api, so on the underground, you will use node js sockets. You could use unix sockets instead of http sockets because are faster BUT are worst to debug, so I recommend you don't to that (but it's ok know alternatives).
And finally, your system looks like an "actor design pattern". At first glance this design patter is a little difficult to understand but you could have a look at this if you want more info about actor model pattern: