我有面向服务的架构,有几个服务。
产品 - 商品列表
{
id: number,
price: number
}
类别 - 商店类别信息+产品ID列表
{
id: number,
parentCategory: number,
productIds: number[]
}
让我们假设我有这样的类别实例
{
id: 1,
parentCategory: null,
productIds: [1, 3, 4, 5, ....]
}
我需要从产品价格中选择上面列出的10个产品。
请求的类别服务流程,因为它不知道有关它向产品服务发出请求的价格的任何信息:
/api/products?
ids=<list of all product ids>
limit=10
sortBy=price
当该类别包含大量产品时效果不佳。
这种情况下的配方是什么? 感谢。
答案 0 :(得分:2)
我同意胜利者 - POST请求可以解决潜在的问题。如果您担心性能,例如,在数千个ID的情况下,您应该考虑将这些服务合并在一起。或者在类别服务中重复价格数据。
出于性能原因,数据复制和将多个服务合并为一个是微服务架构中的正常情况。但是,如果您的产品服务仅存储信息并且没有任何业务逻辑,那么我肯定会考虑合并。
另外,请考虑让所有ID已经在Categories服务中排序。对我来说,如果产品服务不会做任何有用的业务并且只进行排序
,那么这将是最好的解决方案答案 1 :(得分:1)
您应该使该端点仅接收Http Post,然后您应将所有产品ID放在请求正文中。像这样:
{ &#34; IDS&#34; :[],(包含所有id的数组) &#34;限制&#34;:10, &#34; sortBy&#34;:&#34;价格&#34; }
不确定为什么你有这个字段&#34;限制&#34;,我认为控制限制的是你传入的ID数。