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

交互通信微服务-如何实现?

胡沈义
2023-03-14

我正在进行一个Personal项目,将一个整体的web应用程序转换为微服务(每个服务都有自己的数据库)。

第二个想法是使用RabbitMQ这样的消息代理。“Register Service”仍然在自己的数据库中插入有趣的东西,并以用户信息作为数据在队列中发布消息。“用户服务”使用此消息并将数据持久化到其“用户”数据库中。通过使用这个概念,这两个服务是完全隔离的,这可能是一个很好的想法。

但是,发送给客户机的响应如何(客户机发出了“注册服务”的请求)。有了第一个想法,我们可以发送“200,一切都好!”或者400。这不是问题。有了第二个想法,我们不知道消费者(“用户服务”)是否持久化了用户数据,那么我需要什么来回复客户端呢?

我在web应用程序的商店方面也有同样的问题。客户将想要购买的产品发到“订货服务”上。这一个需要检查他有的虚拟货币到“用户服务”,然后转发产品细节到“交付服务”,如果用户有足够的钱。如何在完全隔离的服务中做到这一点?

我不想利用来自客户端的http请求时间在消息代理上进行异步请求/回复。

我希望你们中的一些人会开导我。

共有1个答案

孟谭三
2023-03-14

Tom建议了一个相当好的链接,在那里,你可以依靠的是投票最多的答案及其推理和解决方案。您的具体问题可能根源于Register服务和User服务是分开的。也许他们不应该这样?

理想情况下,Register服务应该将“UserRegistrated”事件发布到总线并返回200,仅此而已。它不应该关心(知道)该事件的任何订阅者。

 类似资料:
  • 我实际上在研究微服务,我面临一个问题。 上下文 我正在开发两个微服务: 用户管理,基于spring,使用MySQL数据库 计划管理,基于ASP.NET与SQL Server数据库。此服务的唯一访问点是列出一些RESTFULendpoint的API,如 计费管理,基于MongoDB的node.js。 问题 > 我该怎么做才能只允许通过用户服务访问规划信息,而不耦合这两个服务?知道以后可以从其他地方访

  • 我目前正在做一个Spring Boot微服务项目。我已经创建了服务,每个服务都是单独运行的。有了这个,我需要一些服务来与其他服务进行通信。我怎样才能做到这一点? 我看到了一些关于这一点的博客,它们使用Netflix、Eureka云服务器来实现这一点。有没有什么方法可以在本地环境中实现这一点,而不使用云服务器?

  • 我正在使用microservies Architect学习API。下面是关于设置的小描述 我有两个微服务应用程序和API网关 包括API网关在内的所有应用程序都是NodeJS-Express app。 Auth Logic-JWT,在API网关上处理 使用http-proxy将每个传入的API网关请求传递给每个微服务应用程序。 还将用户信息作为代理头传递。 客户端请求流: 客户端使用JWT令牌从m

  • “在微服务之间添加的同步依赖关系越多,例如查询请求,客户端应用程序的总体响应时间就越差。 “这是真的吗?我认为在同步通信中,我们比异步通信更直接地得到反馈。例如,假设一个用户向微服务a发送http请求,微服务a又异步地向另一个微服务B发送请求,并异步地等待它的答复。如果微服务B关闭,那么用户将等待到超时才能得到响应,而在同步通信中,他将立即得到响应。

  • 我读过一些关于微服务架构的文章,但没有人会讨论事务。尽管他们说这很难做到。也许有人能描述一下如何处理这个问题? 但不是从领域方面,而是从技术方面。假设我们有一个业务案例,我们需要调用两个不同的服务,它们都对数据库进行了一些更改。但是如果第二个发生错误,如何回滚呢? 谁知道这个问题的一些库或设计模式?