关于node.js如何适应客户端和Web服务器,我的描述是否正确?
因此,在流程中,客户端(A)将从node.js(B)请求一些资源,而该资源又将此请求(具有所有异步和事件的i / o优点)分派给服务(C),可能会获取一些客户信息并通过回调将其返回到node.js(B),然后node.js将该响应返回给客户端。
1.这是对的吗?
两个相关问题:
2. node.js如何知道将请求分派给哪个服务?你是否必须在node.js中创建镜像服务API的api“stubs”,因为客户端不直接与服务对话?
3.如何在此架构中处理会话状态?
答案 0 :(得分:7)
首先是通常流程的“图表”:
Client
|
v
Request
|
v
(load balancer e.g. nginx)
|
v
Node.js Instance
| | |
v v V
DB APIS FILES
关于你的最后两个问题:
您希望它如何知道? Node.js是一个通用框架,您必须编写代码来处理这个问题。
同样,Node.js是完全通用的。如果您只有一个实例,则可以在内存中执行此操作。否则你可能会使用redis之类的东西。
您可以在Node.js中编写游戏服务器,只需处理数字,或编写Web服务器。
但你不必这样做,按你喜欢的方式去做,或者搜索一个按你喜欢的方式做到的框架。
答案 1 :(得分:2)
Node.js是一个用于在javascript中编写不在Web浏览器中运行的应用程序的框架。由于它的异构性,它恰好擅长编写Web服务。对于(B)Node.js是网络服务器,它不在网络服务器(apache)内运行。对于(C)您的所有逻辑都可以在您的Node.js应用程序中,或者您的Node.js应用程序可以与其他服务进行通信以获取数据。这完全取决于你。
对于2,你可以随心所欲地做到这一点。您正在编写代码,按照您的应用程序中有意义的方式执行。
对于3,状态由传递给回调的会话/连接对象处理。