欢迎光临汤雪华的博客

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

公告

置顶随笔

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

posted @ 2015-08-06 13:41 netfocus 阅读(13956) 评论(25) 编辑

摘要: ENode框架Conference案例分析系列之 - 业务简介ENode框架Conference案例分析系列之 - 上下文划分和领域建模ENode框架Conference案例分析系列之 - 架构设计ENode框架Conference案例分析系列之 - Quick StartENode框架Confer...阅读全文

posted @ 2015-06-28 11:54 netfocus 阅读(2974) 评论(5) 编辑

摘要: 关于DDD的理论知识总结,可参考这篇文章。DDD社区官网上一篇关于聚合设计的几个原则的简单讨论:文章地址:http://dddcommunity.org/library/vernon_2011/,该地址中包含了一篇关于介绍如何有效的设计聚合的一些原则,共3个pdf文件。该文章中指出了以下几个聚合设计...阅读全文

posted @ 2013-09-24 00:39 netfocus 阅读(26112) 评论(80) 编辑

摘要: 领域驱动设计之领域模型加一个导航,关于如何设计聚合的详细思考,见这篇文章。2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。领域驱动设计分为两个阶段:以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型;由领域模型驱动软件设计,用代码来实现该领域模型; 由此可见,领域驱动设计的核心是建立正确的领域模型。为什么建立一个领域模型是重要的领域驱动设计告诉我们,在阅读全文

posted @ 2011-10-10 01:01 netfocus 阅读(137455) 评论(84) 编辑

2016年12月15日

摘要: 设计文档模板: 一些其他的思考: 去除一切花俏的建模技巧,我觉得最重要的方向就是去努力分析问题和事物的本质,针对这个本质进行领域建模。这个领域建模,最主要的还是锻炼的人的事物抽象能力。10个人,建出来的领域模型都不同。本质原因就是大家对同一个问题的理解不同,对事物的本质的理解不同。虽然最终都能解决当阅读全文

posted @ 2016-12-15 10:38 netfocus 阅读(1383) 评论(1) 编辑

2016年12月13日

摘要: 我总结出来的操作性强又说明原理的调漂方法:1)只要半水空勾的时候,漂露出N目,N大于0(之所以要大于0是为了保证铅坠+双钩比浮漂要轻);2)然后挂上双饵后露出M目,M可以等于0(等于0的时候说明挂上双饵后双钩+双饵+铅坠比浮漂的浮力重,反之,则比浮力轻);3)然后就开始将浮漂往上拉,直到露出的目数Z阅读全文

posted @ 2016-12-13 21:48 netfocus 阅读(305) 评论(0) 编辑

2016年9月27日

摘要: 前言 前段时间针对EQueue的完善终于告一段落了,实在值得庆祝,自己的付出和坚持总算有了成果。这次新版本主要为EQueue实现了集群功能,基本实现了Broker的高可用。另外还增加了很多实用的功能,对性能也做了很多优化。总之,EQueue越来越成熟了。 EQueue最新版本信息 Nuget:htt阅读全文

posted @ 2016-09-27 00:16 netfocus 阅读(2913) 评论(16) 编辑

2016年9月26日

摘要: 选择ENode意味着什么可能很多人还不太清楚。我简单整理了一下: 意味着你选择了:你需要做DDD领域建模、选择了事件驱动的架构、选择了CQRS架构、选择了最终一致性、选择了事件溯源、选择了分布式。这些你都调研过了,再考虑是否你需要使用。 所以ENode不是一个简单的类库型的框架,它是一个架构型的框架阅读全文

posted @ 2016-09-26 09:51 netfocus 阅读(2364) 评论(4) 编辑

2016年9月25日

摘要: 转自:http://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html 下面是更多开源协议的一个表格任君选择,总有一款是你的菜。 不过先来了解一些下方表格中出现的用词的解释: 协议和版权信息(License and copyright notic阅读全文

posted @ 2016-09-25 16:58 netfocus 阅读(673) 评论(0) 编辑

2016年8月17日

摘要: IO操作可以分为3类:同步阻塞(BIO)、同步非阻塞(NIO)、异步(AIO)。 同步阻塞(BIO):在此种方式下,用户线程发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户线程才能做后续的事情。 同步非阻塞(NIO): 在此种方式下,用户线程发起一个IO操作以后,可返阅读全文

posted @ 2016-08-17 22:15 netfocus 阅读(426) 评论(1) 编辑

2016年7月15日

摘要: 限流算法 常见的限流算法有:令牌桶、漏桶、计数器。 1. 令牌桶限流 令牌桶是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌,填满了就丢弃令牌,请求是否被处理要看桶中令牌是否足够,当令牌数减为零时则拒绝新的请求。令牌桶允许一定程度突发流量,只要有令牌就可以处理,支持一次拿多个令牌。令牌桶中装的阅读全文

posted @ 2016-07-15 11:57 netfocus 阅读(865) 评论(1) 编辑

2016年7月11日

摘要: 最近打算用C#实现一个基于文件的EventStore。 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客中也有大量介绍。EventStore是在Event Sourcing(下面简称ES)模式中,用于存储阅读全文

posted @ 2016-07-11 00:01 netfocus 阅读(2793) 评论(13) 编辑

2016年6月7日

摘要: 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。 再比如,我是一家互阅读全文

posted @ 2016-06-07 01:43 netfocus 阅读(12100) 评论(40) 编辑

2016年5月3日

摘要: 原文地址:http://blog.csdn.net/rdhj5566/article/details/50646599 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 阅读全文

posted @ 2016-05-03 09:54 netfocus 阅读(1994) 评论(3) 编辑

2016年4月17日

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

posted @ 2016-04-17 15:30 netfocus 阅读(7934) 评论(44) 编辑

2016年3月24日

摘要: 拍下减库存(拍减) 拍减方式是指在买家提交订单的时候库存就减掉了,拍减需要防恶拍。 付款减库存(付减) 付减方式是指提交订单时不减库存只生成订单,当买家付款完毕后才减库存;付减需要防超卖,超卖是指买家付完款后减库存时库存已经没有了,导致买家付了款但买不到货。因为承若付了款就有货,没货就赔钱,所以必须阅读全文

posted @ 2016-03-24 20:30 netfocus 阅读(1114) 评论(0) 编辑

2016年2月17日

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

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

2016年2月12日

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

posted @ 2016-02-12 23:41 netfocus 阅读(20882) 评论(88) 编辑

2016年2月6日

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

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

2016年2月3日

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

posted @ 2016-02-03 19:12 netfocus 阅读(1644) 评论(3) 编辑

2016年1月20日

posted @ 2016-01-20 15:25 netfocus 阅读(3961) 评论(4) 编辑

2015年11月2日

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

posted @ 2015-11-02 02:25 netfocus 阅读(10440) 评论(53) 编辑

2015年11月1日

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

posted @ 2015-11-01 00:13 netfocus 阅读(4344) 评论(28) 编辑

2015年9月12日

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

posted @ 2015-09-12 11:30 netfocus 阅读(1415) 评论(5) 编辑