通过cache来发挥同步与异步的优势

大家好,我是利奥。同步和异步各有用途,那么我们如何结合呢?

以最近开发的CQRS-NODE的CQRS框架,我采用了cache方式来管理异步与同步,让他们成为我的奴隶。

大家知道node的JS代码部分是在一个进程中运行的,那么I/O部分是非堵塞异步的,这里就出现一个问题。

比如,我的eventStore,也就是事件的DB,在store时会和数据库异步交互,这就可能出现数据不一致的现象。

我的解决方法是在 EventStore 组件内部加入一个 cache ,这样的话我就可以把领域发来的 event 数据原子的加入到 cache中,那么还有个线程会监听 cache 是否有新的 event 加入,如果有,那么就会 to db 操作,而 to db 操作是异步的,又不影响主进程的运作。

希望对大家有力。

[该贴被brighthas于2012-08-02 09:12修改过]

2012-08-02 09:11 "@brighthas"的内容
ache 是否有新的 event 加入,如果有,那么就会 to db 操作,而 to db 操作是异步的 ...

很好,建议同时把对" to db 操作"事件也进行备份保存,可以将事件append到一个文件中,也可以保存到Cassandra中,以被回放:

http://www.jdon.com/44213