cqrs-node框架EventStore的元件
現在我們具有了外觀的一個CQRS的模型。參看 http://www.jdon.com/44191
但後端技術層的 EventStore 應該是個什麼樣呢?我們一起來探討研究吧。
我眼下能想到的進展如下:
EventStore
在EventStore採用了Cache技術,store時會先儲存在記憶體中,然後非同步的儲存到資料庫中,先進先存的機制。
store() ---> cache ---> DB
這個好處是保持其 一致性 和 效能 。
我們在 eventStore.store 內部加入 setTimeout模擬器,看看如下測試程式碼
result
name01
name03
name02
name04
這個 result 說明 ID01 和 ID02的aggre的Event儲存是非同步的,而且互補干擾。
當ID=01 的aggre的event store時,實際上是加入到 eventStore 的cache中的,然後內部有監聽器開始運作,對於ID01的event cache進行逐個同步的儲存,保持其順序,當儲存成功後刪除一個,再次下一個...
這個方式可以保證非同步的效能,和針對一個aggre的事件儲存是同步的順序的。
但後端技術層的 EventStore 應該是個什麼樣呢?我們一起來探討研究吧。
我眼下能想到的進展如下:
EventStore
// 這裡store的可以是event也是shapshot。 // 這個方法是由repository呼叫的。例如: // 我們 eventStore.store(event); 之後再 eventStore.store(shapshot); 那麼, // 這時候這個 shapshot 就是event之後的aggre的快照。 // shapshot 內部有個 num 表示他最後的一個 event的num. eventStore.store(event/shapshot); <p class="indent"> |
在EventStore採用了Cache技術,store時會先儲存在記憶體中,然後非同步的儲存到資料庫中,先進先存的機制。
store() ---> cache ---> DB
這個好處是保持其 一致性 和 效能 。
我們在 eventStore.store 內部加入 setTimeout模擬器,看看如下測試程式碼
var eventStore = ... var e1 = new Event('changeName',{name:'name01'}) e1.aggreId = '001' var e2 = new Event('changeName',{name:'name02'}) e2.aggreId = '001' var e3 = new Event('changeName',{name:'name03'}) e3.aggreId = '002' var e4 = new Event('changeName',{name:'name04'}) e4.aggreId = '002' eventStore.store(e1); eventStore.store(e2); eventStore.store(e3); eventStore.store(e4); eventStore.on('to db store success',function(event){ // 監聽當event儲存到db中成功的事件 console.log(event.data.name); }) <p class="indent"> |
result
name01
name03
name02
name04
這個 result 說明 ID01 和 ID02的aggre的Event儲存是非同步的,而且互補干擾。
當ID=01 的aggre的event store時,實際上是加入到 eventStore 的cache中的,然後內部有監聽器開始運作,對於ID01的event cache進行逐個同步的儲存,保持其順序,當儲存成功後刪除一個,再次下一個...
這個方式可以保證非同步的效能,和針對一個aggre的事件儲存是同步的順序的。
[該貼被brighthas於2012-07-31 13:14修改過]
[該貼被brighthas於2012-08-02 08:20修改過]
[該貼被brighthas於2012-08-02 08:57修改過]
相關文章
- cqrs-node 框架的進展框架
- cqrs-node框架的實際例子的開發流程框架
- joeventstore:Node.js的EventStoreNode.js
- 最近看了下axonframework,請教下EventStoreFramework
- domain object 呼叫 repository 與 eventStoreAIObject
- 從 CRUD 遷移到事件溯源的祕訣 - eventstore事件
- 阿里的Atlas元件化框架阿里元件化框架
- Android 好用的自定義元件、框架Android元件框架
- 從原生web元件到框架元件原始碼(一)Web元件框架原始碼
- 從原生web元件到框架元件原始碼(二)Web元件框架原始碼
- 從原生web元件到框架元件原始碼(三)Web元件框架原始碼
- Android元件化框架搭建Android元件化框架
- 微信小程式框架與元件微信小程式框架元件
- Android元件化:stitch框架Android元件化框架
- 元件/框架設計原則元件框架
- 轉賬的事務,如何用eventstore實現,請給例子,致謝!
- Android元件框架:Android元件管理者ActivityManagerAndroid元件框架
- Vue 框架-09-初識元件的應用Vue框架元件
- Fresco框架SimpleDraweeView控制元件的簡單使用框架View控制元件
- 基於HTML5的CSS框架元件BootFlatHTMLCSS框架元件boot
- 事件驅動的元件框架Flight介紹事件元件框架
- bootstrap框架基礎和常用元件boot框架元件
- 微信小程式前端框架/UI元件微信小程式前端框架UI元件
- 前端框架擼起來——根元件前端框架元件
- 元件和模組間Activity路由框架元件路由框架
- 深入wepy小程式元件化框架元件化框架
- CC框架實踐(2):Fragment和View的元件化框架FragmentView元件化
- 十個擁有豐富UI元件的JavaScript框架UI元件JavaScript框架
- Element-UI 框架 el-scrollbar 元件UI框架元件
- 完全元件化框架Atoms-mvp元件化框架MVP
- 前端框架擼起來——元件和路由前端框架元件路由
- 小程式iOS客戶端框架——控制元件事件邏輯框架與控制元件原生化iOS客戶端框架控制元件事件
- 小程式iOS客戶端框架—控制元件事件邏輯框架與控制元件原生化iOS客戶端框架控制元件事件
- 用 F#和EventStore實現DDD領域驅動設計
- 前端專案框架搭建隨筆—input元件的編寫前端框架元件
- 前端專案框架搭建隨筆---input元件的編寫前端框架元件
- 前端專案框架搭建隨筆---Tab元件的編寫前端框架元件
- Laravel 核心--深入剖析 Laravel 框架 Jwt 元件的實現原理Laravel框架JWT元件