微服务:跨不同服务过滤

问题描述 投票:0回答:1

在我当前的项目中,我们有两个带有两个不同数据库实例的微服务,两个实例都具有引用相同的基础资源(尽管名称不同)的表,也就是说,服务A的DB中的资源表被称为在服务B的DB中,foo称为bar

使用这两个服务发送写入,并且每个服务负责在更新/写入/删除时写入另一个服务(暂时忽略网络/数据库故障。]

每个服务负责有关资源的不同信息,因此每个表包含不同列,其中包含<的不同信息。例如:服务A具有属性health_state,而服务B具有属性[和列] archived

我们希望允许用户按两个服务列/属性进行过滤-即GET /foo?search="health_state='unhealthy' and archived='false'"。人们将如何去做呢?

[我们最初曾考虑将一种微服务作为另一种微服务的“前端”,并支持在A中搜索两种服务的字段。然后,A会将相关的搜索字段发送到B,并将结果加入A的数据库中。如果B的结果集很大,这是一个可能无法很好扩展的选项,这是因为A需要[[all

archived资源(在上面的示例中)才能进行联接。另外,搜索查询的解析可能非常复杂。如果

我们确实采用这种方法,那么关于如何进行大规模的建议?请紧记将我们的应用程序移植到CQRS之类,如here所示,这似乎是一个巨大的更改(相应的DB中当前有10K +行)。

感谢您的回应!

在我当前的项目中,我们有两个带有两个不同数据库实例的微服务,两个实例都具有引用相同基础资源(尽管名称不同)的表,即资源...

architecture microservices distributed-system distributed-transactions
1个回答
-1
投票
© www.soinside.com 2019 - 2024. All rights reserved.