架构与模式11

架构与模式
 
关于如何设计一个基于事件驱动架构的思考
摘要: 最近一直在思考一个问题:有没有这样一种可能,就是一个领域模型的状态不依赖于外部,它只负责接收外部的事件,然后根据这些事件做出响应;响应分两种:1)根据模型当前的内存状态进行业务逻辑处理,然后产生事件,注意:这个过程不会改变模型当前的内存状态;2)根据事件改变自己的状态;另外,也是最重要的,领域模型不用关心自己所产生的事件到底怎么样了,比如不关心有没有持久化,不关心是否和别的事件有并发冲突。它只管根据自己当前的内存状态做上面这两点的响应;如果这样的设想有可能,那领域模型就是真正的中央业务逻辑处理器了,和CPU很类似了。这样它才能真正快起来。简单的说就是:事件->模型->事件模型只管响阅读全文
posted @ 2013-03-26 11:23 netfocus 阅读(872) | 评论 (3) 编辑
 
分布式系统参考资料
摘要: 原文地址:http://www.dancres.org/reading_list.htmlIntroductionI often argue that the toughest thing about distributed systems is changing the way you think. The below is a collection of material I've found useful for motivating these changes.Thought ProvokersRamblings that make you think about the wa阅读全文
posted @ 2013-03-12 09:50 netfocus 阅读(51) | 评论 (0) 编辑
 
【转发】CAP理论十二年回顾:"规则"变了
摘要: CAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于网络的数据共享系统,都最多只能拥有以下三条中的两条:数据一致性(C),等同于所有节点访问同一份最新的数据副本;对数据更新具备高可用性(A);能容忍网络分区(P)。CAP理论的表述很好地服务了它的目的,即开阔设阅读全文
posted @ 2013-02-28 13:06 netfocus 阅读(56) | 评论 (0) 编辑
 
【转载】NoSQL数据库笔谈
摘要: 原文地址:http://www.blogjava.net/libin2722/articles/346055.htmlNoSQL数据库笔谈颜开v0.22010.2序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum NRWVector clockVirtual nodegossipGossip (State Transfer Model)Gossip (Operation Transfer Model)Merkle treePaxos背景DHTMap R阅读全文
posted @ 2013-02-22 15:57 netfocus 阅读(28) | 评论 (0) 编辑
 
【转载】为什么使用 Redis及其产品定位
摘要: 原文地址:http://www.infoq.com/cn/articles/tq-why-choose-redis传统MySQL+ Memcached架构遇到的问题实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。Memcached与MySQL数据库数据一致性问题。Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支阅读全文
posted @ 2013-02-21 12:54 netfocus 阅读(61) | 评论 (0) 编辑
 
重新学习了LMAX架构,对该架构和Event Sourcing模式有了一些的新的理解,总结记录了一下。
摘要: 最近又学习了一下LMAX架构,让我对该架构以及event sourcing模式又有了很多新的认识和疑问。注:如果不知道什么是lmax架构和event sourcing模式的看官可以自己先去查查资料:LMAX可以看看martin写的一篇文章:http://martinfowler.com/articles/lmax.htmlEvent Sourcing的资料比较多,随便google一下即可。当然,我的博客里也有大量关于这两个方面的笔记,有兴趣的可以看看。下面是我的一些最新的想法。LMAX architecture:input event + business logic processor(BL阅读全文
posted @ 2013-02-16 23:44 netfocus 阅读(1422) | 评论 (8) 编辑
 
Infinitely Scalable System
摘要: Infinitely scalable system is a concept established byPat Hellandin his paper "Life Beyond Distributed Transactions: An Apostate's Opinion". It describessoftware architecture capable of scaling in almost-infinite manner as the amount of data stored and processed grows up.practically, e阅读全文
posted @ 2012-10-02 12:39 netfocus 阅读(102) | 评论 (0) 编辑
 
LMAX架构
摘要: 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 阅读(1078) | 评论 (3) 编辑
 
如何打败CAP定理【转载】
摘要: 原文地址:http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.htmlCAP定理是数据系统设计的基本理论,目前几乎所有的数据系统的设计都遵循了这个定理。但CAP定理给目前的数据系统带来了许多复杂的、不可控的问题,使得数据系统的设计越来越复杂。Twitter首席工程师、Storm的作者Nathan Marz在本文中通过避开CAP定理带来的诸多复杂问题,展示了一个不同于以往的数据系统设计方案,给我们的数据系统设计带来了全新的思路。CAP定理指出,一个数据库不可能同时满足一致性(Consistency)、可用性(Availability)和分阅读全文
posted @ 2012-02-12 13:35 netfocus 阅读(240) | 评论 (0) 编辑
 
基于事件驱动的领域模型实现框架 - 分析框架如何解决各种典型业务逻辑场景
摘要: 前面一篇文章介绍了我设计的基于“事件”驱动的领域模型的基础框架的设计起因和设计思路。基于这个框架,我们领域模型中的所有领域对象有如下几个特点:任何一个领域对象是“活”的,它不仅有属性(对象的状态),而且有方法(对象的行为)。为什么说是“活”的呢?因为领域对象的行为都不是被另外的领域对象调用的,而是自己去响应一些“事件” ,然后执行其自身的某个行为的。在我看来,如果一个领域对象的方法是被其他的领域对象调用的,那这个对象就是“死”的,因为它没有主动地去参与到某个活动中去。这里需要强调的一点是,领域对象只会更新它自己的状态,而不会更新其他领域对象的状态。所有的领域对象之间都是平等的,任何两个领域对象阅读全文
posted @ 2011-04-03 23:30 netfocus 阅读(2593) | 评论 (2) 编辑
 
看了一些ASP.NET MVC开源项目后的一些想法,关于ASP.NET MVC+Repository+Service架构的一些思考
摘要: 最近在学习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:1)定义所有项目中需要用到的Model,即Entity,并且所有的Model都是纯Model,它们不依赖于阅读全文
posted @ 2010-08-01 18:07 netfocus 阅读(4651) | 评论 (9) 编辑
原文地址:https://www.cnblogs.com/Leo_wl/p/2983519.html