Architecture 使用microservices发件箱模式,我可以将事件写入磁盘而不是数据库吗?

Architecture 使用microservices发件箱模式,我可以将事件写入磁盘而不是数据库吗?,architecture,event-handling,microservices,Architecture,Event Handling,Microservices,我最近一直在读有关在微服务中处理事件的文章。有大量材料引用发件箱模式,以同时处理数据库更新和事件发布: 在我看来,只需将数据写入磁盘而不是表就足够了(甚至可以更好地扩展)。出于某种原因,我似乎找不到任何讨论磁盘写入的资源,而只是对表的写入。此模式是否存在问题,或者我只是没有使用正确的关键字来查找它?这里的要点是,将实体写入订单表和将事件/消息写入发件箱表的操作都是在一个事务中执行的(根据定义,这是原子事务) 这在文件系统上非常困难(如果不是不可能的话):如果您将实体写入一个文件,将事件/消息写

我最近一直在读有关在微服务中处理事件的文章。有大量材料引用发件箱模式,以同时处理数据库更新和事件发布:


在我看来,只需将数据写入磁盘而不是表就足够了(甚至可以更好地扩展)。出于某种原因,我似乎找不到任何讨论磁盘写入的资源,而只是对表的写入。此模式是否存在问题,或者我只是没有使用正确的关键字来查找它?

这里的要点是,将实体写入订单表和将事件/消息写入发件箱表的操作都是在一个事务中执行的(根据定义,这是原子事务)

这在文件系统上非常困难(如果不是不可能的话):如果您将实体写入一个文件,将事件/消息写入另一个文件,这将不是一个原子操作。将两者写入同一个文件是不好的(因为消息中继进程需要只读取事件),并且您可能仍然无法保证这是原子的

此外,行为取决于您使用的文件系统的类型

进一步阅读: