【问题标题】:Guidance on how to make micro-services communicate effectively如何让微服务有效沟通的指导
【发布时间】:2019-08-19 22:02:09
【问题描述】:

我们正在着手一个新的项目开发,我们将有多个微服务相互通信,以在云原生系统中提供信息。我们的应用程序将被分解为多个服务,例如 Text Cleaner 、 Entities Extractor 、 Entities Resolver 、 Output Converter 。正如您在图中看到的,我们有一些分叉,其中一个服务的输入需要其他服务等等。

只有一项服务会暴露在外面。其他人将是内部的。我们必须为客户提供同步响应。

我想看看是否有人可以在这里指导我找到最佳模式:

1- 我们是否应该有一个 Wrapper 类,它具有所有项目的模型类,因为最终输出转换器需要所有细节,或者数据应该如何流动,以便在最后一个微服务中对数据进行分类。我们希望保持系统松散耦合,并且正在考虑如何在没有中间层来组成所有这些数据的情况下编排这个流程?

2- 如何编排这个流程?服务网格/API 网关?

【问题讨论】:

  • 所有这些服务都作为独立的微服务对外暴露吗?还是只暴露了测试清洁剂?另外,预期的输出如何......它是同步响应还是异步响应?
  • 只有一项服务会暴露在外面。其他人将是内部的。我们正在为客户提供同步响应

标签: rest design-patterns microservices api-design


【解决方案1】:

看起来像一个基于工作流的解决方案。当涉及到这么多步骤时;您可以给消费者的唯一响应是该请求已被接受..并且在后台进程开始..您不能让消费者等待很长时间,因为它们会导致连接超时。

如果所有这些服务都部署在不同的服务器上(对于可扩展性的微服务定义应该是这种情况);您可以通过 HTTP 或使用 JMS 等消息传递解决方案进行通信,或者如果您部署在云上;他们提供基于工作流的服务..

【讨论】:

  • 我们将在 ecs 集群上使用基于云的服务。时间安排非常严格,但我们会看到并尽力而为......谢谢
  • 如果您确定要同步回复消费者,并且一旦完成流程完成;那么 HTTP 是不同服务之间通信的唯一解决方案。因为我们使用 JMS 使事情异步。
猜你喜欢
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 2017-11-09
  • 2017-12-31
  • 2022-07-06
相关资源
最近更新 更多