【发布时间】:2018-11-18 13:06:24
【问题描述】:
我们有一个用于对象之间关系建模的微服务。在具有基数约束(如 1-1、1-N、N-N 等)的主要对象和次要对象之间定义关系。 微服务提供创建关系、查找关系、获取辅助项、获取主项等 API。
查询 API“获取辅助对象”获取主对象并返回所有相关的辅助对象。由于相关的次要对象可能很大,因此对结果进行了分页。
我们有另一个微服务,它很好地利用了这个关系微服务来处理关系。该消费服务接受类似的分页选项,如页面索引和编号,并将其传递给关系服务,并将从关系服务获得的页面结果返回给调用应用程序。到目前为止一切都很好。
我们最近发现,消费微服务与关系微服务有点啰嗦,因为它必须多次调用“获取辅助”API,因为有多个主要对象需要获取辅助对象。
因此,我们考虑让“Get Secondary”API 成为批量 API,使其接受多个主要对象作为输入。但后来我们陷入了分页的工作方式。
API 将为每个主要对象返回相关的次要对象,但像之前一样将次要对象限制为页面大小。
这对于第一次调用来说似乎很好,但我们不确定这对于后续调用会如何表现。如果辅助对象的数量少于一个或多个主要对象的页面大小,那么后续调用的输入应该是什么。我需要再次传递那些主要对象吗?
我们正在这里寻找有关如何设计此批量 API 的建议。欢迎任何意见。
【问题讨论】:
-
您是否决定过解决方案?如果是这样,请随时添加您自己的答案来解释您所做的事情,以便其他人也可以从中学习。
标签: algorithm pagination microservices relation