当前位置: 首页 > 知识库问答 >
问题:

Java Streams批组合调用

郤玉书
2023-03-14

我今天的问题是关于构建微服务时的组合操作。

让我们使用虚构的场景:我想构建一个仪表板。仪表板由一群人和他们的信息(历史、评论、购买、最后搜索的产品)组成。

阅读SpringCloud和SpringReactor,我想要一个调用多个微服务的非阻塞解决方案:用户服务、审查服务、搜索引擎服务等等。。。。

我的第一个猜测是

  • 加载用户,
  • 对于每一个,加载其评论
  • 然后加载其历史记录
  • 合并所有数据

在伪代码中,类似于loadUser()。平面图(u-

加载1个用户时,我们可以估计还需要4个http调用。对于100个用户、400个额外呼叫等,Big-O似乎不是线性的。

在微服务还委托从XYZ微服务加载数据的最坏情况下,我们得到:对于1个用户-

为了避免这种情况,我们可以加载所有用户,提取他们的id,用一批id调用搜索微服务。每个微服务可以一次加载所有数据(可能是id映射的评论列表),原始调用将合并所有这些列表。(一种zip函数)

摘要:我刚刚读了这个关于可观察性组成的问题。我的问题可以用“当您在链的开始没有唯一用户但有数百个用户时,您是否使用相同的策略?”(性能可能是个问题没有?)


共有1个答案

陆伟
2023-03-14

您可能希望使用批处理来减少下游调用的数量。您将希望发送批,而不是通过observable发送单个用户。

 类似资料:
  • 问题内容: 因此,问题在于能够结合多种警告抑制,使每个项目都不需要它自己的注释。 因此,例如: 现在,我不想在班级针对这两个警告设置两个警告,而是这样: 但这不是有效的语法,有没有办法做到这一点? 问题答案: 使用以下内容:

  • 我使用的是RxJava组合测试操作符。 根据文档,订阅时,只有在两个可观察对象都发出这些值之后,才会发生第一个组合发射事件,从这一点开始,它将在每个可观察对象的每次发射时发射。 如何确定第一个可观察到的发射事件已经发生,它现在正在等待第二个...

  • 我正在做一个项目,我将使用Spring批处理和Spring集成来创建工作流系统。这个工作流系统应该能够从队列中读取消息,这实际上是来自客户端的作业请求,根据作业请求类型,我需要调用一些7-8系统。 每个系统从某个位置读取输入文件(通常是一个集中存储系统,其中所有输入文件都存储在客户提交的文件中),对其进行处理,然后将其传递给下一个系统,最终我应该能够响应客户端,例如SUCCESS如果它被所有系统成

  • 我有一个场景,它遵循以下步骤: 1。读者将从表a中得到一个列表a。 2。处理器处理列表A以返回对象A和MimeMessage。 3.writer将对象A写入表B中,并使用MimeMessage发送邮件。 我可以在上面的场景中使用CompositeItemProcessor和CompositeItemWriter吗?如果是,我如何在步骤配置中设置输出对象,以及如何定义发送邮件的ItemWriter将

  • 如果其他人已经解决了这个问题,那就只是寻找一些信息。我想同时使用Spring集成和Spring批处理。这两个都是SpringBoot应用程序,理想情况下,我希望将它们和各自的配置分开,这样它们都是自己的可执行jar。我在自己的进程空间中执行它们时遇到问题,我相信我希望,除非有人能说服我,否则,每个程序都能像自己的Spring Boot应用程序一样运行,并用自己的配置文件和属性初始化自己。不过,我遇

  • 组合变换是一组多元变换形式,每次变换是由多个节点出发,经过相互计算最终向其下游节点进行传播。在实现的过程中,通常需要借助一个对象把多个变换管理起来,例如源码中的 EasyReact/Core/NodeTransforms/EZRCombineTransformGroup.h。下面介绍下全部的组合变换形式。 combine 响应式编程经常会使用 a := b + c 来举例,意图是当 b 或者 c