欢迎光临汤雪华的博客

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

随笔分类 -  架构

摘要:参考资料: 架构篇:https://yq.aliyun.com/articles/698301 模型篇:https://yq.aliyun.com/articles/701593 实现篇:https://yq.aliyun.com/articles/710363 架构设计 存储模型设计 群主场景的优 阅读全文

posted @ 2019-07-24 17:27 netfocus 阅读(3178) 评论(1) 推荐(2) 编辑

摘要:前言 本文想再讨论一下关于领域、业务、业务模型、解决方案、BC、领域模型、微服务这些概念的含义和关系。初衷是我发现现在DDD领域建模以及解决方案落地过程中,常常对这些概念理解不清楚或者有歧义,导致我们不知道如何运用这些概念来落地我们的软件。先通过一个图来说明一下这些概念之间的关系,如下图所示 领域、 阅读全文

posted @ 2019-06-05 15:41 netfocus 阅读(9590) 评论(17) 推荐(32) 编辑

摘要:转自:http://www.cnblogs.com/esingchan/p/3917718.html 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。 P 阅读全文

posted @ 2019-05-17 17:41 netfocus 阅读(1087) 评论(0) 推荐(2) 编辑

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

posted @ 2016-07-15 11:57 netfocus 阅读(3148) 评论(1) 推荐(2) 编辑

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

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

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

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

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

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

摘要:普通哈希:var x =hash(dataKey) % N一致性哈希:将数据的key的hashcode与存放数据的节点(如缓存节点)的IP(或服务器名)的hashcode都分布到同一个环形数值空间,比如0~2^32-1。然后,把数据的hashcode沿着顺时针方向找第一个存放数据的节点的hashco... 阅读全文

posted @ 2015-05-28 21:43 netfocus 阅读(1259) 评论(1) 推荐(0) 编辑

摘要:规则如下:判断一个ID在哪个库里的公式是:id % 4 / 2判断一个ID在哪个表里的公式是:id % 4 % 2其中4表示总共有多少个分表,2表示总共有多少个数据库;上面这个例子,表示总共有2个数据库,每个数据库有2个分表,所以是2 * 2 = 4;所以,对于ID是1,2,3,4,5的这些情况,落... 阅读全文

posted @ 2015-05-25 23:51 netfocus 阅读(5093) 评论(4) 推荐(2) 编辑

摘要:之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题。后来找到了自己认为比较合理的解决方案,分享给大家。也希望能和大家交流,擦出更多的火花。论坛核心领域问题分析论坛领域的核心概念是:帖子、回复。大家都知道,一个帖子可以有零个或多个回复。对同一个帖子,不同... 阅读全文

posted @ 2015-05-06 00:41 netfocus 阅读(3235) 评论(30) 推荐(9) 编辑

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

posted @ 2014-12-07 22:53 netfocus 阅读(20482) 评论(55) 推荐(60) 编辑

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

posted @ 2014-10-28 00:43 netfocus 阅读(35760) 评论(91) 推荐(84) 编辑

摘要:设计指导原则一. 性能相关:避免在循环内部new一些没有必要每次都new的对象。所有与IO相关的操作,都需要考虑性能问题,一般采取的措施是连接池,缓存,减少调用次数,合并请求。每个业务都要分析整个请求链路,找到瓶颈,通过压测的方式确认问题及验证解决方案。根据业务情况,使用异步化和最终一致性。CPU,... 阅读全文

posted @ 2014-07-08 17:19 netfocus 阅读(1900) 评论(0) 推荐(1) 编辑

摘要:基于Quorum投票的冗余控制算法Quorom 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理。在有冗余数据的分布式存储系统当中,冗余数据对象会在不同的机器之间存放多份拷贝。但是同一时刻一个数据对象的多份拷贝只能用于读或者用于写。该算法可以保证同... 阅读全文

posted @ 2014-03-24 23:43 netfocus 阅读(17738) 评论(3) 推荐(3) 编辑

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

posted @ 2013-03-26 11:23 netfocus 阅读(17114) 评论(7) 推荐(6) 编辑

摘要:最近又学习了一下LMAX架构,让我对该架构以及event sourcing模式又有了很多新的认识和疑问。注:如果不知道什么是lmax架构和event sourcing模式的看官可以自己先去查查资料:LMAX可以看看martin写的一篇文章:http://martinfowler.com/articl... 阅读全文

posted @ 2013-02-16 23:44 netfocus 阅读(4667) 评论(18) 推荐(1) 编辑

摘要: 阅读全文

posted @ 2012-02-12 14:06 netfocus 阅读(710) 评论(0) 推荐(0) 编辑

摘要:Reference URL:http://martinfowler.com/articles/lmax.html该架构主要基于:Disruptor + In Memory DDD + Event Sourcing通过高并发框架(Disruptor)实现用户事件的输入和Domain Event的输出;一个常驻内存的Business Logic Processor(DDD领域模型),它负责在纯内存中处理业务逻辑;关键点:首先确保用户输入事件被持久化到数据库,并定时创建快照,然后在内存中响应事件更改业务对象的状态;因为一切都是在内存中处理,所以没有IO,也不需要数据库事务,非常快;机器down了怎么 阅读全文

posted @ 2012-02-12 14:04 netfocus 阅读(9311) 评论(3) 推荐(2) 编辑

摘要:最近在学习ASP.NET MVC 2.0的一些开源项目,发现这些项目中都普遍用到了同一种架构设计,即:ASP.NET MVC + Service + Repository。从网上看了一些关于这方面的介绍后觉得这种架构确实满好的。以微软的一个典型的开源项目Oxite为例:该项目由下面的Projects组成:1)Oxite;2)Oxite.LinqtoSqlDataProvider;3)Oxite.Mvc;4)Oxite.Mvc.Tests;5)OxiteSite;Oxite Project:定义所有项目中需要用到的Model,即Entity,并且所有的Model都是纯Model,它们不依赖于任何 阅读全文

posted @ 2010-08-01 18:07 netfocus 阅读(11494) 评论(9) 推荐(1) 编辑