1

在基于 REST 的微服务架构中,将相关数据分组到单个实体下的正确方法是什么。例如,我们可能有一个用户服务负责管理用户。此外,我们可能有一个服务负责管理为每个用户存储的某种数据(让我们假设在这个例子中,我们正在谈论用户的物品/库存)

我们可以分离库存管理服务并使用它来为任何东西创建库存,所以我不希望库存管理系统需要用户才能运行。

是否有一个典型的模式可以提供我正在寻找的分组(多个库存项目给一个所有者)?支持这种架构的其他端点会是什么样子?

4

2 回答 2

2

我认为没有任何典型的模式。这取决于您的业务流程和实体之间的关系。但是有一些一般性的说法。

  1. “实体”服务必须与所有业务流程无关。
  2. “实体”服务的功能上下文不得重叠。
  3. 服务实现中不应该有冗余逻辑。
  4. 如果业务流程不需要,则无需为每个实体创建新服务。
  5. 如果实体之间存在强从属关系,则可以引入包含所有关联实体的聚合以及使用它运行的新服务。

您可以根据您的解决方案正式检查大多数这些断言。

此外,总是可以将某些服务拆分为两个新服务。但是,您在分析阶段付出的努力越多,您需要拆分服务的可能性就越小。

于 2014-09-22T20:47:36.490 回答
1

无论语义如何,“服务”行为通常都会转化为工厂模式实现。

Api 方面:

POST: yourapi.com/v1/inventory/add/
DATA: {
  userid: 1,
  products: [
     'Canned Chicken Gizzards',
     'Snake Oil Extract',
     'Evaporated Water'
  ]
}

工厂类方面:

InventoryFactory->addProduct((object) product)

-- also have a method to add products under a user --

InventoryFactory->addProducts((array) products, userid)
于 2014-10-28T05:57:04.630 回答