node.js 的微服务是否防止主线程阻塞
Does microservices with node.js prevent the main thread from blocking
我刚刚开始了解 node.js 事件循环和微服务的工作原理,我想知道微服务是否可以防止 node.js 应用程序的主线程阻塞。我的意思是我们可以 运行 在不同的微服务上同步代码,它可以在完成后发回响应,我们可以只扩展该微服务实例。
我的理解是否正确,或者如果我有什么不对的地方请告诉我?
我认为您混淆了两个概念。
微服务是用任何语言编写的相对较小、松散耦合的服务。例如,如果我在 BigEcommerceCompany 工作,我可能有各种用各种技术编写的微服务来管理,例如身份验证服务、购物车服务、支付服务、评论服务等,它们可能都使用相同的语言或者全部使用不同的语言。
Node 的事件循环是单线程的,但也有一个工作池,可以在不阻塞事件循环的情况下用于工作,Node 也可以通过 cluster
模块(或各种包装器)中的构建集群) 跨可用 CPU。 Node 中阻塞函数调用的一个例子是 child_process.spawnSync
;非阻塞调用的一个例子是 child_process.spawn
。在编写 Node 代码时使用大量 Promises 或回调来尽可能避免阻塞事件循环是很常见的。
这两个概念并没有真正的关联,只是通过编写小型微服务可能更容易发现、隔离和修复节点性能问题。
我刚刚开始了解 node.js 事件循环和微服务的工作原理,我想知道微服务是否可以防止 node.js 应用程序的主线程阻塞。我的意思是我们可以 运行 在不同的微服务上同步代码,它可以在完成后发回响应,我们可以只扩展该微服务实例。
我的理解是否正确,或者如果我有什么不对的地方请告诉我?
我认为您混淆了两个概念。
微服务是用任何语言编写的相对较小、松散耦合的服务。例如,如果我在 BigEcommerceCompany 工作,我可能有各种用各种技术编写的微服务来管理,例如身份验证服务、购物车服务、支付服务、评论服务等,它们可能都使用相同的语言或者全部使用不同的语言。
Node 的事件循环是单线程的,但也有一个工作池,可以在不阻塞事件循环的情况下用于工作,Node 也可以通过 cluster
模块(或各种包装器)中的构建集群) 跨可用 CPU。 Node 中阻塞函数调用的一个例子是 child_process.spawnSync
;非阻塞调用的一个例子是 child_process.spawn
。在编写 Node 代码时使用大量 Promises 或回调来尽可能避免阻塞事件循环是很常见的。
这两个概念并没有真正的关联,只是通过编写小型微服务可能更容易发现、隔离和修复节点性能问题。