0

我正在寻找解决以下要求的解决方案

  • 在产品目录中,每个产品都应具有“预购库存”自定义属性,该属性在每个产品级别保存整数值。

  • 成功完全添加到购物车时,该产品将计数减一,并且只允许用户将产品添加到购物车,直到值达到零。

  • 当我们在密件抄送中看到产品时,它应该显示该产品的最新计数。

我正在考虑将此自定义属性作为产品目录的一部分,但由于产品目录是版本存储库,因此直接从代码更新值而不是从密件抄送更新并不复杂。

是否有可能或有单独的非版本存储库来存储“预购库存”编号并将存储库映射到产品目录并在产品目录高级选项卡中显示最新计数?

谢谢

维维克·辛格

4

1 回答 1

0

实际上,从生产实例更新版本化存储库项目是一种非常糟糕的做法,因此我认为您的建议是我能想象的唯一可能的解决方案。您需要一个非版本化的持久存储库(我们称之为InventoryRepository ),其中包含跟踪产品库存的项目描述符(我们称之为stockLevel )。

但是,这种方法背后存在一个陷阱。为了保证产品的库存水平是最新的,您必须禁用对stockLevel项目描述符的缓存。这带来了数据库将因更新而过载的风险,这可能会导致效率问题。

在我的一个项目中,我们通过将库存实现功能移动到另一个服务器实例 (util) 来解决这个问题 - 由异步 DMS 调用触发(其来源是客户的操作,例如将物品放入购物篮)。多亏了这一点,生产实例只从InventoryRepository读取库存水平,而不是更新它们。

这是一个巨大的性能改进,但生产实例仍然非常频繁地读取非缓存值。我们观察到,如果特定设备的库存水平非常高,如果只需要布尔信息(可用或不可用),则无需检查其确切值。因此,我们引入了一个缓存的项目描述符,它为产品 ID分配了一个布尔属性 ( isHighlyAvailable )。在特定产品的库存水平没有降低到阈值(比如 100)之前,isHighlyAvailable被设置为 true,并且生产实例依赖于它的值。一旦达到阈值,isHighlyAvailable 就会被取消设置(通过异步 DMS 消息),并且从现在开始准确的、未缓存的stockLevel在评估产品可用性时,生产实例会考虑价值。

于 2020-02-21T23:51:24.103 回答