在我当前的项目中,我们有两个带有两个不同数据库实例的微服务,两个实例都具有引用相同的基础资源(尽管名称不同)的表,也就是说,服务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 +行)。
感谢您的回应!在我当前的项目中,我们有两个带有两个不同数据库实例的微服务,两个实例都具有引用相同基础资源(尽管名称不同)的表,即资源...