来自许多服务的 .Net 核心微服务查询

.Net core microservices query from many services

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

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

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

购买的第三个微服务 在这个微服务中有table purchase {title, productid(这个id来自第一个微服务中的product table), accountid (这个id来自secount微服务中的account table)}.

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

谁可以执行此查询抛出微服务模式。

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

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

考虑到这种情况,您必须在 Message Queue 服务集成中为 Purchase、Vendor 和 Products 构建至少 3 个 Queue Manager。 并设置请求和回复队列。

现在,这些数据的请求和回复可以是 JSON 或 XML,您可以随意选择。

您需要创建一个监听器,负责监听回复队列,您可以创建类似 SignalR 流式传输的东西来连续监听。

完成所有整数后,您可以直接将结果注入客户端应用程序。