JdonFramework并发异步特性
jdon框架支持并发异步等概念,能够根据服务器自身处理量,动态调节并发量,如果服务器比较弱,可以删除或延时一些细枝末节的处理。
Jdon框架让延迟和吞吐量之间有一个自主选择,而这些概念传统的JavaEE如EJB/Spring目前还没有提供这种细粒度的编码选择。
推荐一篇文章:构建可伸缩系统 Scala vs Java,JdonFramework其实类似这个案例中的Scala,虽然文章作者倾向于Scala,但是使用Jdon框架完全可以做到Scala这种吞吐量等三个指标的平衡。
该文章作者是用Jmeter进行测试,Jdon框架也是使用Jmeter测试了两个写场景和多个读场景,可以与其index payments和search比较。
普通Java的测试图:
由于搜索请求耗费CPU,同时拖累了Index等其他查询,搜索请求实际在独占CPU,同时搜索自己的吞吐量也大幅度缩小,意味着程序中可能有同步锁(当然,我没有看源码,只是凭以往经验)。
下面是Scala的测试图:
在Scala中,Median 和90%line和吞吐量三个指标在三个模块中都没有因为搜索请求处理而影响,文章归结于异步因素,这也是我认同的。
当然文章也不否认Java能够做到,关键是否优雅地做到,而Jdonframework则依靠DDD+ EventSourcing +CQRS不但可以在代码编写上优雅做到,而且性能吞吐量等三个指标因为Jdon框架的异步同样不受影响,下图是引入异步后Jdon框架Jmeter的测试结果,从Median 90%line和吞吐量三个指标值可以看出:
下图同样使用Jdonframework以前没有使用异步版本,图中90%line和吞吐量都比上图要低,主要原因也是因为同步执行这些功能反而牵涉彼此,就如同将两个人的一只腿绑在一起走路。
以上两张图类似Scala vs Java这篇文章的两张图,没有转换成文章中竖条图直观。感谢Importantme翻译了这篇文章,英文原文:Scalable scala vs java
[该贴被admin于2013-04-10 09:19修改过]
[该贴被admin于2013-04-10 13:42修改过]