摘要:
前言 本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果。我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东西。我觉得,任何设计的结果可能看起来很高大上,一张图即可,但背后的思考,才是更有价值的东西。 本篇文 阅读全文
摘要:
前言 Conference案例是使用ENode框架来开发的。之前我没有介绍过ENode框架是如何启动的,以及启动时要注意的一些点,估计很多人对ENode框架的初始化这一块感觉很复杂,一头雾水。所以,本文想简单介绍一下在做一个实际项目时,我们该如何初始化ENode。 使用ENode开发的项目的顶层宿主 阅读全文
摘要:
前言 前面的文章,我介绍了Conference案例的业务、上下文划分、领域模型、架构,以及代码整体流程。接下来想针对案例中一些重要的场景,分别做进一步的分析。本文想先介绍一下Conference案例的核心业务场景 订单处理减库存的设计。 下单以及订单处理流程描述 下单过程 预订者浏览某个已发布的会议 阅读全文
摘要:
问题背景 Conference案例,是一个关于在线创建会议(类似QCon这种全球开发者大会)、在线管理会议位置信息、在线预订某个会议的位置的,这样一个系统。具体可以看微软的这个项目的主页:http://cqrsjourney.github.io。 然后我们设计了一个Conference聚合根,对应领 阅读全文
摘要:
前言 前一篇文章介绍了Conference案例的架构设计,本篇文章开始介绍Conference案例的代码实现。由于代码比较多,一开始就全部介绍所有细节,估计很多人接受不了,也理解不了。所以,我先进行一次QuickStart的介绍,即选取某个简单典型的场景从前到后过一下每个环节。这样大家就能够快速对代 阅读全文
摘要:
Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的。 Conference后台会议管理:http://www.enode.me/conference Conference前台预定座位:http://www.en 阅读全文
摘要:
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台。这个系统的用户有两类:1)客户,可以创建和管理会议;2)会议座位预定者,可以预订会议座位。具体的关键业务描述如 阅读全文
摘要:
前言 ENode是一个应用开发框架。通过ENode,我们可以方便的开发基于DDD+CQRS+EventSourcing+EDA架构的应用程序。之前我已经写了很多关于ENode的架构以及设计原理的文章,但是因为没有和具体的例子结合来进行分析,所以可能很多人还是无法理解ENode的功能和设计。所以,接下 阅读全文
摘要:
前言 ENode是一个应用开发框架,为开发人员提供了一整套基于DDD+CQRS+ES+EDA架构风格的解决方案。ENode从发布1.0开始到现在的差不多两年时间,我几乎每周都在更新设计或实现代码。以至于从来没有一个稳定的版本可以提供给大家,非常惭愧。但我相信,随着时间的推移和我的努力的积累,ENod 阅读全文
摘要:
前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式。到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果。 EQueue开源地址:https://github.com/tangxuehua/equeue EQueue相关文档: 阅读全文
摘要:
前言 最近用了几个月的时间,一直在对EQueue做性能优化。到现在总算告一段落了,现在把一些优化的结果分享给大家。EQueue是一个分布式的消息队列,设计思路基本和阿里的RocketMQ一致,只是是用纯C 写的,这点大家应该都知道了。 EQueue开源地址:https://github.com/ta 阅读全文
摘要:
要持久化的关键数据有三种 消息; 队列,队列中存放的是消息索引信息,即消息在文件中的物理位置(messageOffset)和在队列中的逻辑位置(queueOffset)的映射信息; 队列消费进度,表示当前队列中的消息消费到第几个了; 发送消息的设计 producer将消息的二进制数据发送到broke 阅读全文
摘要:
一年前,当我第一次开发完EQueue后,写过一篇文章介绍了其整体架构,做这个框架的背景,以及架构中的所有基本概念。通过那篇文章,大家可以对EQueue有一个基本的了解。经过了1年多的完善,EQueue无论是功能上还是成熟性上都完善了不少。所以,希望再写一篇文章,介绍一下EQueue的整体架构和关键特 阅读全文
摘要:
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式。它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题。Eric Ivans为领域驱动设计提出了大量的最佳实践和经验技巧。只有对领域的不断深入认识,才能得到一个解决领域核心问题的领域模型。如果一个应用的复杂性不 阅读全文
摘要:
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析。先提前祝大家猴年新春快乐、万事如意、身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概念。我个人也写了一个ENode框架,专门用来实现这个架构。CQRS架构本身的思想其实非常简单,就是读 阅读全文
摘要:
限流算法 常见的限流算法有:令牌桶、漏桶、计数器。 1. 令牌桶限流 令牌桶是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌,填满了就丢弃令牌,请求是否被处理要看桶中令牌是否足够,当令牌数减为零时则拒绝新的请求。令牌桶允许一定程度突发流量,只要有令牌就可以处理,支持一次拿多个令牌。令牌桶中装的 阅读全文
摘要:
规则如下: 判断一个ID在哪个库里的公式是:id % 4 / 2 判断一个ID在哪个表里的公式是:id % 4 % 2 其中4表示总共有多少个分表,2表示总共有多少个数据库;上面这个例子,表示总共有2个数据库,每个数据库有2个分表,所以是2 2 = 4; 所以,对于ID是1,2,3,4,5的这些情况 阅读全文
摘要:
DDD领域驱动设计基本理论知识总结 Posted on 2011 10 10 01:01 netfocus 阅读(120434) 评论(82) 编辑 收藏 var allowComments=true,cb_blogId=17223,cb_entryId=2204949,cb_blogApp=cur 阅读全文