是否可以对事件进行建模以封装在不同时间发生的多个事情

Posted

技术标签:

【中文标题】是否可以对事件进行建模以封装在不同时间发生的多个事情【英文标题】:Is it okay to model events to encapsulate multiple things that happened at different times 【发布时间】:2021-11-25 08:47:37 【问题描述】:

我正在开发一个需要在多个设备之间同步的旧版移动应用程序。它使用事件源来执行同步。它是一个离线应用程序,业务逻辑在应用程序内而不是在中心位置执行。这似乎很好,因为需要执行业务逻辑的域被隔离到一个组中,并且同步只发生在同一组中的不同设备之间。 由于系统的分布式特性,属于一个组(组流)的事件按时间排序。虽然,现有事件非常大并且具有以下格式。

SomethingHappened 

    prop1: 
        ...props,
        created_date,
        updated_date, 
    ,
    prop2: 
        ...props,
        created_date,
        updated_date,
    
    created_date // timestamp of the event

我是事件溯源的新手,上面的格式让我很困惑。如果某个事件发生在某个时间,我们不应该在那个时候记录它吗?可以对事件进行建模以封装在不同时间发生的多个事情吗?如果没有,这会导致将来出现问题吗?

【问题讨论】:

【参考方案1】:

将多个事件组合成一个事件本质上没有错;它通常出现在您希望以原子方式持久保存多个事件的情况下(即所有事件都被持久化或没有一个事件被持久化)。只要您能确定顺序不变式得到维护,就可以了。

【讨论】:

感谢您的回复。只是想知道是否有另一种方法可以在不引入大型事件的情况下做同样的事情。

以上是关于是否可以对事件进行建模以封装在不同时间发生的多个事情的主要内容,如果未能解决你的问题,请参考以下文章

PHP/MySQL:对数据库中的重复事件进行建模,但查询日期范围

IT运维系统-服务建模从业务角度来管理IT

NIO组件 Selector(选择器)

NIO Selector(选择器)

Neo4J中可以进行冗余建模

说说iOS中的手势及触摸