欢迎光临汤雪华的博客

一个人一辈子能坚持做好一件事情就够了!坚持是一种刻意的练习,不断寻找缺点突破缺点的过程,而不是重复做某件事情。
posts - 141, comments - 2101, trackbacks - 0, articles - 0
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 - CQRS & Event Sourcing

摘要:背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删除的场景,所以内部实现会比较复杂,性能也相对比较低。而Event Store实际上对数据只有新增和查 阅读全文

posted @ 2019-05-14 11:23 netfocus 阅读 (1895) | 评论 (5) 编辑

摘要:浅谈12306核心模型设计思路和架构设计[推荐] DDD部分核心概念的个人理解 DDD CQRS架构和传统架构的优缺点比较[推荐] DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考 ENode 2.6 架构与设计简介以及全新案例分享[推荐] ENode框架Conference案例分析系列 阅读全文

posted @ 2016-02-17 23:15 netfocus 阅读 (5569) | 评论 (6) 编辑

摘要:明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析。先提前祝大家猴年新春快乐、万事如意、身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概念。我个人也写了一个ENode框架,专门用来实现这个架构。CQRS架构本身的思想其实非常简单,就是读 阅读全文

posted @ 2016-02-06 21:25 netfocus 阅读 (24958) | 评论 (20) 编辑

摘要:大家好,我叫汤雪华。我平时工作使用Java,业余时间喜欢用C#做点开源项目,如ENode, EQueue。我个人对DDD领域驱动设计、CQRS架构、事件溯源(Event Sourcing,简称ES)、事件驱动架构(EDA)这些领域比较感兴趣。我希望把自己所学的知识能否分享给大家,所以,把这个领域里的 阅读全文

posted @ 2014-12-07 22:53 netfocus 阅读 (15384) | 评论 (55) 编辑

摘要:CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺。对于这3点,我觉得很有道理。所以也想谈一下,CQRS架构下是如何实现高性能的。 关于CQRS(Command Query Responsibility Se 阅读全文

posted @ 2014-10-28 00:43 netfocus 阅读 (28051) | 评论 (90) 编辑

摘要:大家知道enode框架的架构是基于ddd+event sourcing的思想。我们持久化的不是聚合根的最新状态,而是聚合根产生的领域事件。最近我在思考如何实现一个基于文件的eventstore。目标有两个:1.必须要高性能;2.支持聚合根事件的并发持久化,要确保单个聚合根实例不会保存版本号相同的事件... 阅读全文

posted @ 2013-10-29 23:41 netfocus 阅读 (4078) | 评论 (3) 编辑

摘要:最近一直在思考一个问题:有没有这样一种可能,就是一个领域模型的状态不依赖于外部,它只负责接收外部的事件,然后根据这些事件做出响应;响应分两种:根据模型当前的内存状态进行业务逻辑处理,然后产生事件,注意:这个过程不会改变模型当前的内存状态;根据事件改变自己的状态;另外,也是最重要的,领域模型不用关心自己所产生的事件到底怎么样了,比如不关心有没有持久化,不关心是否和别的事件有并发冲突。它只管根据自己当前的内存状态做上面这两点的响应;如果这样的设想有可能,那领域模型就是真正的中央业务逻辑处理器了,和CPU很类似了。这样它才能真正快起来。简单的说就是:事件->模型->事件模型只管响应事件, 阅读全文

posted @ 2013-03-26 11:23 netfocus 阅读 (15388) | 评论 (7) 编辑

摘要:基于DDD+Event Sourcing设计的模型如何处理模型重构? 问题背景:ddd的核心是聚合,一个聚合内包含一些实体,其中一个是根实体,这个大家都有共识;另外,如果将DDD与Event Sourcing结合,那就是一个聚合根会产生一些event;那么这里的问题是:如果一个领域对象,一开始是en... 阅读全文

posted @ 2012-09-06 12:22 netfocus 阅读 (4345) | 评论 (3) 编辑

摘要:一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的最新状态持久化保存到数据库中,也就是说我们的数据库中的数据是反映了对象的当前最新的状态。而事件溯源则相反,不是保存对象的最新状态,而是保存这个对象所经历的每个事件,所有的由对象产生的事件会按照时间先后顺序有序的存... 阅读全文

posted @ 2012-02-12 13:51 netfocus 阅读 (18665) | 评论 (17) 编辑

摘要:CQRS on itself is a very simple pattern. It only describes that the component of an application that processes commands should be separated from the c... 阅读全文

posted @ 2012-02-12 13:49 netfocus 阅读 (5640) | 评论 (6) 编辑

摘要:Business value of the events, the value of having a log, the fact that the Event Store is additive only.The biggest advantage of this architecture is ... 阅读全文

posted @ 2012-02-12 13:40 netfocus 阅读 (2525) | 评论 (0) 编辑

摘要:CQRS is just a concept that we can seperate the application to two parts: the write part and the read part, that's all;Command: A command represents w... 阅读全文

posted @ 2012-01-31 00:06 netfocus 阅读 (2990) | 评论 (3) 编辑