【问题标题】:Data sharing between nodejs micro services using events使用事件在节点 js 微服务之间共享数据
【发布时间】:2020-09-12 20:17:21
【问题描述】:

所以我的项目有一个微服务架构,如果我有 2-3 个服务在运行。我需要根据在这些服务上触发的一些事件调用一个操作。

如何使用 nodejs 事件发射器类或任何其他类似服务来实现这一点。 socket.io 是替代品吗?

或者有可能吗?

【问题讨论】:

  • 如果这些是我认为的微服务类型,那么它们位于不同的进程中,您不能使用 eventEmitter 在它们之间进行通信。 eventEmitter 用于单个 node.js 进程。您将不得不使用某种进程间通信来在微服务(http 请求、webSocket 或 socket.io 消息、nodejs 子进程sendMessage() 等)之间传递信息。如果您的微服务都在同一个 node.js 进程中,那么就可以使用 eventEmitter 事件来共享数据了。
  • 要处理的数据量是多少?期望吞吐量?希望您的服务具有可扩展性和容错性?
  • 它基本上是某种日志写入,但不完全是这样。我们从一个服务调用一个函数,但函数体在另一个服务中,它是从多个服务调用的。而且它们都是单独托管的。

标签: node.js events microservices


【解决方案1】:

相关事件(您需要在分布式服务之间进行通信)需要成为微服务的“公共”api 的一部分。 因此,引发(域)事件的服务可以提供相同的发布/订阅机制,或者您使用面向消息的中间件(RabbitMQ、Kafka、...) 在您的微服务中,您可以有一个接口服务订阅内部触发事件,然后将相关事件重新触发到此公共 api..

【讨论】:

  • 我们是否需要有类似父母的服务?
猜你喜欢
  • 2016-07-30
  • 2017-05-29
  • 2017-05-27
  • 2016-08-15
  • 2019-01-31
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2018-10-12
相关资源
最近更新 更多