【问题标题】:.Net core microservices query from many services.Net 核心微服务查询来自许多服务
【发布时间】:2023-04-11 01:11:02
【问题描述】:

我有一个 .net core 5 微服务项目,客户端有一个搜索模块,它将从许多对象中查询数据,这些对象在许多服务中。

第一个产品微服务。 在这个微服务中有表产品 {productid, productname }。

供应商的第二个微服务。 在这个微服务中有表帐户 {verndorId, vendorName}。

购买的第三个微服务 在这个微服务中有表 purchase {title, productid(这个 id 来自第一个微服务中的产品表), accountid (这个 id 来自 secount 微服务中的帐户表)}。

现在:用户想要搜索产品名称如“衣服”和供应商名称如“x”的购买;

谁可以做这个查询抛出微服务模式。

【问题讨论】:

    标签: .net-core microservices asp.net-core-5.0


    【解决方案1】:

    采用单体系统并在每张表上添加服务接口只会让您的生活陷入困境,因为您将开始自己实现该数据库逻辑 - 就像在这个问题中您尝试重新创建数据库连接一样。

    暂且不说,对于这种情况,您对服务的分区听起来并不正确(或不需要)。考虑到购买描述了发生的事件(即使它们后来被删除),他们可以捕获产品或供应商的状态。因此,您可以扩充购买中的数据,以表示购买时正确的产品和供应商数据。这会将购买查询与购买服务隔离开来,并具有在产品/供应商随时间演变时保留历史记录的额外好处。

    【讨论】:

    • 感谢您的回答,就我而言,它只是不购买模块,我现在正在开发完整的财务系统,据我所知,微服务模式不适合这些类型的系统,对吧?
    • 不一定——但简单的闯入服务将无法正常工作。在许多微服务中,即使您对服务进行分区以最小化跨服务依赖关系,您仍然需要集中报告 - 我通常通过构建一个从所有服务获取数据的数据集市来做到这一点,请参阅freecontent.manning.com/wp-content/uploads/…
    【解决方案2】:

    考虑到这种情况,您必须在消息队列服务集成中为购买、供应商和产品构建至少 3 个队列管理器。 并设置请求和回复队列。

    现在这些数据的请求和回复可以是 JSON 或 XML,但你喜欢。

    您需要创建一个侦听器来负责侦听回复队列,并且您可以创建类似 SignalR 流的东西来持续侦听。

    一旦所有的整合完成,您就可以直接将结果注入您的客户端应用程序中。

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 2016-11-26
      • 2020-09-08
      • 2021-01-10
      相关资源
      最近更新 更多