微服务-不同表的目录和库存跟踪

问题描述 投票:0回答:1

我目前正在研究微服务架构,并根据到目前为止所读的内容,将目录微服务/数据库与清单分开是很好的,这就是我要去的地方。

问题:

由于目录将位于另一个数据库(PostgreSQL / MongoDB)上,因此与清单(PostgreSQL)进行比较。当我想使用产品代码创建库存变动报告时,最好的建模方法是什么?到目前为止,我将productId发送到库存,但未发送可能会更改的代码。

跟踪库存变动的最佳方法是什么?我想到了这个架构:

-

InventoryTransaction
-productId
-operationDate
-action (IN/OUT)
-count

InventoryTransactionSummary <- updated daily
-productId
-prevTotal - total from the previous date
-total - prevTotal + productIn - productOut
-productIn - in stock
-productOut - sold, pullout, etc
database-design schema microservices database-schema
1个回答
0
投票

我目前正在研究微服务架构,并根据到目前为止所读的内容,将目录微服务/数据库与清单分开是很好的,这就是我要去的地方。

这不是黄金法则。

重要的是首先了解业务逻辑。您是否真的需要为每个用例提供单独的服务?

我不完全理解您的示例,但是根据我的经验,这里有一些选择:

  1. 使用事件源。仅保存发生事件的必要数据,并在读取事件时重建状态或使用最终状态的每小时/每日快照,以避免每次都重新计算状态。这样,您将拥有与上面定义的服务相同的服务,并且您将具有连接到事件源数据库并根据您定义的某些功能重新创建状态的服务。阅读更多here
  2. 您用于OLTP的数据库-在线事务处理,例如Postgres,不适合OLAP-在线分析处理。您可以按照在示例中显示的方式保存数据,但是可以向数据库添加触发器,即在每次插入时将事件发送到OLAP数据库,该数据库可以为更好的分析目的建模数据。阅读更多here
  3. 在得出关于分离服务的结论之前,问问自己,您是否真的需要分离两个服务?例如,汽车和车轮。如果我总是需要带轮子的汽车,为什么要分开?这只会让我更加头疼。阅读更多here
© www.soinside.com 2019 - 2024. All rights reserved.