前言 今天是個開心的日子,又是周末,可以輕輕松松的寫寫文章了。去年,我寫了ENode 1.0版本,那時我也寫了一個分析系列。經過了大半年的時間,我對第一個版本做了很多架構上的改進,最重要的就是讓ENode實現了分布式,通過新增一個分布式消息隊列EQueue來實現。之所以要設計一個分布式的消息隊列 ...
CQRS架構,C端的職責是處理從上層發送過來的command。對於單台機器來說,我們如何盡快的處理command呢 本文想通過不斷提問和回答的方式,把我的思考寫出來。 首先,我們最容易想到的是使用多線程。那當我們要處理一個command時,能直接丟到線程池中,直接交給線程池去調度嗎 不行。因為假如多個command修改同一個聚合根時,會導致db的並發沖突,從而會導致command的不斷重試,大大降 ...
2015-01-26 00:24 11 3155 推薦指數:
前言 今天是個開心的日子,又是周末,可以輕輕松松的寫寫文章了。去年,我寫了ENode 1.0版本,那時我也寫了一個分析系列。經過了大半年的時間,我對第一個版本做了很多架構上的改進,最重要的就是讓ENode實現了分布式,通過新增一個分布式消息隊列EQueue來實現。之所以要設計一個分布式的消息隊列 ...
開源地址:https://github.com/tangxuehua/enode 上一篇文章,介紹了enode框架的物理部署思路。本文我們再簡單分析一下Command Service的API設計: Command Service在enode框架中的地位非常重要,用戶使用enode框架的主入口 ...
前言 ENode是一個基於消息的架構,使用ENode開發的系統,每個環節都是處理消息,處理完后產生新的消息。本篇文章我想詳細分析一下ENode框架內部是如何實現整個消息處理流程的。為了更好的理解我后面的流程的描述,我覺得還是應該先把ENode的架構圖貼出來,好讓大家在看后面的分析時,可以對 ...
設計目標 盡量快的處理命令和事件,保證吞吐量; 處理完一個命令后不需要等待命令產生的事件持久化完成就能處理下一個命令,從而保證領域內的業務邏輯處理不依賴於持久化IO,實現真正的in-memory; 保證命令、事件處理的順序性,先來的先處理,先產生的先處理; 保證一個聚合根的事件 ...
前言 今天是個開心的日子,又是周末,可以安心輕松的寫寫文章了。經過了大概3年的DDD理論積累,以及去年年初的第一個版本的event sourcing框架的開發以及項目實踐經驗,再通過今年上半年利用業余時間的設計與開發,我的enode框架終於可以和大家見面了。 自從Eric Evan提出DDD ...
開源地址:https://github.com/tangxuehua/enode 上一篇文章,簡單介紹了enode框架內部的整體實現思路,用到了staged event-driven architecture的思想。通過前一篇文章,我們知道了enode內部有兩種隊列:command queue ...
前言 ENode是一個應用開發框架,為開發人員提供了一整套基於DDD+CQRS+ES+EDA架構風格的解決方案。ENode從發布1.0開始到現在的差不多兩年時間,我幾乎每周都在更新設計或實現代碼。以至於從來沒有一個穩定的版本可以提供給大家,非常慚愧。但我相信,隨着時間的推移和我的努力的積累 ...
接上篇文章繼續 http://www.cnblogs.com/dopeter/p/4899721.html 分布式系統 前篇談到了我們為何要使用分布式系統,因為ENode本身就是一個分布式的框架。看了很多DDD、CQRS的框架,一般情況是一個上下文一個系統,可以多分系統實例 ...