高并发开发??
最近看了论坛中很多关于高并发的文章,感触很多,现在我在公司就在搞后台服务器,我们使用的是ICE来进行集群管理,但是发现并发效果还一般,我觉得这样不够,就看我看到文章里说的,以后高并发是发展的趋势和潮流,我看了下“LMAX架构”,可以处理这样大的并发量,我有点不明白的就是“内存领域对象+事件驱动”,这个内存领域+事件驱动是一个什么样的东西?这个问题迷茫我好久了。我一直不明白?请明白的朋友们给我讲解下,谢谢!
说起来话很长,说白了简单一句:让你的业务模型直接在计算机内存中同时跑起来。
谈到纯粹性能提升,有很多方式,比如CDN 云计算 集群 负载平缓 分布式缓存等等,所有这些都缺一个重要环节:业务模型。
没有业务模型分析设计的性能优化都是粗粒度的,都是浪费资源,所以,很多人看到这个问题,比如一台服务器按照一般优化只能跑1000个,如果10万个并发用户怎么办,总不能架无限个服务器吧,所以有人提出耗费资源少的技术,比如C/C++,这些都和其他方案一样就技术谈技术。
其实如果仔细考虑你的业务模型,你会发现通用技术开发出的技术平台太浪费了,就象你只是三口人,却给你一栋500平方的别墅,不节能也不环保,过去皇帝自己寝室也只是10个平方左右。理解了你的业务模型,你就可以量身定做一套技术架构。
内存领域对象+事件驱动 = 量身定做一套技术架构。
具体情况,可见jivejdon源码
[该贴被banq于2012-02-03 08:11修改过]
是的,见不变性设计,DDD将对象分为实体和不可变的值对象,从分析源头就给了你最优化的性能设计,当你确定一个对象是不可变的,那么其占据资源就很少,而且在计算机内存中运行就最快;反之,你不能确定一个对象的可变或不可变,计算机就可能缺省以可变对待它,结果相当于三个人住500平方大别墅了。
这一特点在新的语言Scala上尤其明显,Scala变量缺省是不可变。
所谓可变与不可变,从平时具体语言使用细节上可知:数组长度是不可变,所以数组快,使用集合初始化如果确定长度性能据好等等,其中道理也孕育着可变与不可变的取舍中。
引用一句话:Many concurrent algorithms are very easy to write with a GC and totally hard (to down right impossible) using explicit free 许多并发算法如果使用GC(自动垃圾回收如Java)将会容易编写,而是采取显式的内存释放(如C)将几乎是不可能的。
相关主题:
领域驱动设计的讨论
[该贴被banq于2012-02-06 09:22修改过]