欢迎光临汤雪华的博客

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

2016年2月17日

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

posted @ 2016-02-17 23:15 netfocus 阅读(6835) 评论(6) 推荐(1) 编辑

2016年2月12日

摘要: 前言 春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时, 阅读全文

posted @ 2016-02-12 23:41 netfocus 阅读(47135) 评论(92) 推荐(73) 编辑

2016年2月6日

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

posted @ 2016-02-06 21:25 netfocus 阅读(32467) 评论(21) 推荐(50) 编辑

2016年2月3日

摘要: 设计目标 尽量快的处理命令和事件,保证吞吐量; 处理完一个命令后不需要等待命令产生的事件持久化完成就能处理下一个命令,从而保证领域内的业务逻辑处理不依赖于持久化IO,实现真正的in-memory; 保证命令、事件处理的顺序性,先来的先处理,先产生的先处理; 保证一个聚合根的事件只有一个线程在持久化, 阅读全文

posted @ 2016-02-03 19:12 netfocus 阅读(3778) 评论(3) 推荐(7) 编辑

2016年1月20日

摘要: 阅读全文

posted @ 2016-01-20 15:25 netfocus 阅读(19635) 评论(6) 推荐(15) 编辑

2015年11月2日

摘要: 前言最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式。到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果。EQueue开源地址:https://github.com/tangxuehua/equeueEQueue相关文档:htt... 阅读全文

posted @ 2015-11-02 02:25 netfocus 阅读(17182) 评论(53) 推荐(126) 编辑

2015年11月1日

摘要: 前言最近用了几个月的时间,一直在对EQueue做性能优化。到现在总算告一段落了,现在把一些优化的结果分享给大家。EQueue是一个分布式的消息队列,设计思路基本和阿里的RocketMQ一致,只是是用纯C#写的,这点大家应该都知道了。EQueue开源地址:https://github.com/tang... 阅读全文

posted @ 2015-11-01 00:13 netfocus 阅读(6570) 评论(30) 推荐(17) 编辑

2015年9月12日

摘要: 要持久化的关键数据有三种消息;队列,队列中存放的是消息索引信息,即消息在文件中的物理位置(messageOffset)和在队列中的逻辑位置(queueOffset)的映射信息;队列消费进度,表示当前队列中的消息消费到第几个了;发送消息的设计producer将消息的二进制数据发送到broker;bro... 阅读全文

posted @ 2015-09-12 11:30 netfocus 阅读(2806) 评论(5) 推荐(4) 编辑

2015年8月7日

摘要: 1.发送消息吞吐量的测试:1)单台producer单个进程的发送消息tps2)单台producer多个进程的发送消息tps3)单台broker的接收消息tps,由于单台producer可能压不满,所以需要可能两台producer来发消息2.消费消息吞吐量的测试:1)单台consumer消费消息的tp... 阅读全文

posted @ 2015-08-07 10:09 netfocus 阅读(1530) 评论(4) 推荐(0) 编辑

2015年8月6日

摘要: ENode是什么 ENode是一个.NET平台开源的应用开发框架,为开发人员提供了一套完整的基于DDD+CQRS+ES+(in-memory)+EDA架构风格的解决方案。 ENode的特色是什么 开源地址 https://github.com/tangxuehua/enode 官网: 目前正在开发中 阅读全文

posted @ 2015-08-06 13:41 netfocus 阅读(26429) 评论(29) 推荐(60) 编辑

2015年7月6日

摘要: 前言本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果。我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东西。我觉得,任何设计的结果可能看起来很高大上,一张图即可,但背后的思考,才是更有价值的东西。本篇文章想... 阅读全文

posted @ 2015-07-06 22:15 netfocus 阅读(4430) 评论(6) 推荐(5) 编辑

2015年6月30日

摘要: 前言Conference案例是使用ENode框架来开发的。之前我没有介绍过ENode框架是如何启动的,以及启动时要注意的一些点,估计很多人对ENode框架的初始化这一块感觉很复杂,一头雾水。所以,本文想简单介绍一下在做一个实际项目时,我们该如何初始化ENode。使用ENode开发的项目的顶层宿主工程... 阅读全文

posted @ 2015-06-30 23:24 netfocus 阅读(3280) 评论(2) 推荐(4) 编辑

摘要: 前言前面的文章,我介绍了Conference案例的业务、上下文划分、领域模型、架构,以及代码整体流程。接下来想针对案例中一些重要的场景,分别做进一步的分析。本文想先介绍一下Conference案例的核心业务场景 - 订单处理减库存的设计。下单以及订单处理流程描述下单过程预订者浏览某个已发布的会议;进... 阅读全文

posted @ 2015-06-30 00:38 netfocus 阅读(5887) 评论(19) 推荐(16) 编辑

2015年6月28日

摘要: 项目源代码地址:https://github.com/tangxuehua/conference 阅读全文

posted @ 2015-06-28 11:54 netfocus 阅读(5406) 评论(5) 推荐(10) 编辑

2015年6月27日

摘要: 前言前一篇文章介绍了Conference案例的架构设计,本篇文章开始介绍Conference案例的代码实现。由于代码比较多,一开始就全部介绍所有细节,估计很多人接受不了,也理解不了。所以,我先进行一次QuickStart的介绍,即选取某个简单典型的场景从前到后过一下每个环节。这样大家就能够快速对代码... 阅读全文

posted @ 2015-06-27 16:48 netfocus 阅读(6097) 评论(30) 推荐(16) 编辑

2015年6月26日

摘要: ENode是一个.NET平台下,纯C#开发的,基于DDD,CQRS,ES,EDA,In-Memory架构风格的,可以帮助开发者开发高并发、高吞吐、可伸缩、可扩展的应用程序。开源项目地址:https://github.com/tangxuehua/enodeENode可能的应用场景如下:当你正在找一个... 阅读全文

posted @ 2015-06-26 11:31 netfocus 阅读(5420) 评论(7) 推荐(2) 编辑

2015年6月24日

摘要: Conference架构概述先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的。Conference后台会议管理:http://www.enode.me/conferenceConference前台预定座位:http://www.enode... 阅读全文

posted @ 2015-06-24 12:52 netfocus 阅读(4748) 评论(14) 推荐(13) 编辑

摘要: Asynchronous code reminds me of the story of a fellow who mentioned that the world was suspended in space and was immediately challenged by an elderly... 阅读全文

posted @ 2015-06-24 01:07 netfocus 阅读(1160) 评论(0) 推荐(0) 编辑

2015年6月22日

摘要: 前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下:业务描述Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台。这个系统的用户有两类:1)客户,可以创建和管理会议;2)会议座位预定者,可以预订会议座位。具体的关键业务描述如下:... 阅读全文

posted @ 2015-06-22 00:55 netfocus 阅读(5414) 评论(26) 推荐(26) 编辑

2015年6月21日

摘要: 前言ENode是一个应用开发框架。通过ENode,我们可以方便的开发基于DDD+CQRS+EventSourcing+EDA架构的应用程序。之前我已经写了很多关于ENode的架构以及设计原理的文章,但是因为没有和具体的例子结合来进行分析,所以可能很多人还是无法理解ENode的功能和设计。所以,接下来... 阅读全文

posted @ 2015-06-21 00:34 netfocus 阅读(4103) 评论(7) 推荐(8) 编辑