rest - 微服务之间的通信——请求数据

标签 rest rabbitmq microservices rpc

我正在处理微服务之间的通信。

例如(虚构的例子,只是为了说明):

  • 微服务 A - 存储用户(getUser 等)
  • 微服务 B - 存储订单(createOrder 等)

  • 现在,如果我想从客户端应用程序添加新订单,我需要知道用户地址。所以请求会是这样的:

    Client -> Microservice B (createOrder for userId 5) -> Microservice A (getUser with id 5)

    微服务 B 将使用来自用户微服务的详细信息(地址)创建订单。

    需要解决的问题:如何有效地处理微服务 A 和微服务 B 之间的通信,因为我们必须等到响应回来?

    选项:
  • 使用 RestAPI,
  • 使用 AMQP,如 RabbitMQ 并通过 RPC 处理此问题。 ( https://www.rabbitmq.com/tutorials/tutorial-six-dotnet.html )

  • 不知道什么对性能更好 .通过 RabbitMQ 或 RestAPI 调用更快吗? 微服务架构的最佳解决方案是什么 ?

    最佳答案

    在您的情况下,使用直接 REST 调用应该没问题。

    选项 1 使用 Rest API:

    当您需要同步通信时。比如说你的情况。这个选项很合适。

    选项 2 使用 AMQP:

    当您需要异步通信时。例如,当您的订单服务创建订单时,您可能希望通知产品服务减少产品数量。或者您可能希望通知用户服务已成功下达用户订单。

    我强烈建议您查看 http://microservices.io/patterns/index.html

    关于rest - 微服务之间的通信——请求数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454109/

    相关文章:

    rest - jaxrs-api VS jsr311-api VS javax.ws.rs-api VS jersey-core VS jaxrs-ri

    python - 尝试连接到 RabbitMQ 时出现 IncompatibleProtocolError

    database - 微服务:每个实例或每个微服务的数据源?

    java - zuul代理总是给出401未经授权

    java - Spring Integration 微服务可视化工具

    java - 其余类型、具有相同 URL 的 JSON 或 HTML 表单

    用于公开 ORM 方法的可扩展且快速的 REST API

    剩下的交给 Azure SQL 数据库集成服务

    c# - 如何确保 MassTransit 中的消息接收顺序

    rabbitmq - 如何在 gitlab-ci.yml 文件中使用 Rabbit?