【问题标题】:NodeJS Microservices, combining dataNodeJS 微服务,结合数据
【发布时间】:2018-01-14 15:12:51
【问题描述】:

我正在构建一个由几个核心“部分”(用户、消息和交易信号)组成的 NodeJS 平台。

所以我的想法是为每个微服务创建微服务,并且效果很好。但我无法理解如何在微服务之间“加入”数据(我最初是前端... ..)

例如,我有 3 个微服务。每个都有自己的 MongoDB,在自己的机器上完全隔离。想象一下从单个微服务检索消息的常见情况,消息有一个“user_id”,我需要获取要在检索到的消息对象中组合的用户名和 profilePicture..?

我阅读了很多关于使用 Redis 的信息,但它对我来说似乎是一种“消息传递”服务,而不是一种“组合”服务。任何人都可以帮助我度过黑暗吗??

谢谢!!

我知道这是一个非常笼统的问题......但我无法掌握在组合多个微服务的数据时“最佳实践”是什么......

【问题讨论】:

  • 我们如何为您的应用提供建议,我们不知道您的代码和架构是什么样的......
  • 对不起,我不知道...这是一个庞大而复杂的话题,Stackoverflow 旨在解决短代码 sn-ps 和精确问题,而不是用于辩论架构问题:/
  • 我认为你可以有不同的方法来解决这个问题。其中之一是制作一个 API 网关,它是所有微服务的入口点。您收到的每个请求都应该发送到您的 API 网关,然后网关会将其进一步发送到微服务。因此,您在 API GW 中获取您的请求,它调用不同的微服务(如果来自不同服务的数据不相互交互,则为异步),然后将它们组合在响应中并将其发送回。例如:cdn.wp.nginx.com/wp-content/uploads/2016/04/…
  • 嗯,我所做的是创建一个身份验证微服务,它为我提供了一个 JWT。 & 处理身份验证。然后,您的 API 网关可以使用 Auth 确认每个请求。微服务。你可以让你的 API 网关尽可能广泛,我认为任何语言都可以适合你,只要你安全可靠地做。
  • 您可以通过维护一个单独的“读取模型”数据存储来做到这一点,该数据存储已针对您的 UI 视图模型进行了优化。您的读取模型将订阅来自其他服务的事件,以使其数据保持最新。

标签: javascript node.js redis microservices


【解决方案1】:

我相信这可以使用kafka streams 来完成,它是一个发布/订阅模型,您可以在其中基于一个公共密钥加入流。您可以订阅一个主题或添加一个数据转换服务,该服务将多个流连接起来并将连接/转换后的数据推送到一个新的流中。所有想要使用此数据的服务都可以订阅此新流。我建议你通过这个link

【讨论】:

  • 有趣的一个!我喜欢流的想法,而不是在网关中手动组合多个 REST api 的数据...谢谢,我会尝试一下
猜你喜欢
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2022-01-13
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多