论文部分内容阅读
随着web2.0技术的发展,对互联网应用提出了更高的要求,首先是应用需要高实时性,更好的交互性;再者是系统需要承载更大的并发量,具有更好的伸缩性以及可靠性。分布式comet框架是一种基于HTTP的实时消息推送框架,用来满足开发者快速开发具有实时交互能力的互联网应用的需求,并为开发者解决以下问题:1)隐藏复杂的AJAX程序开发;2)隐藏浏览器及平台的兼容性问题;3)隐藏客户端与服务器的复杂通信问题;4)隐藏复杂的并发与分布式问题。本文认为目前对于comet框架技术的研究存在两个问题,第一个问题是:虽然目前已经存在了较多的AJAX以及消息推送框架,但这些框架的实现技术及通信协议因厂家的不同具有很大的差异性,缺乏一致、准确的架构概念来描述。第二个问题是:多核化成为软件执行环境的发展趋势,如何利用更多的CPU核提高comet应用的性能以及伸缩性问题成为语言并发模型所面临最为重要的问题。但目前主流的comet框架所使用的并发模型已经出现了“多核危机”。目前以JAVA语言实现的CometD框架成为了业界事实上的标准,CometD框架在comet技术的研究领域内做了很多创新性的工作,并且在性能上超过同类产品有着优异的表现,因此本文以分析CometD的基础上做了以下三部分工作一、分析了JAVA多线程模型实现的原理,测试评估了JAVA的并发模型的性能,评估的结果中我们发现JAVA的多线程模型在多核的环境下线程的迁移和伸缩性都表现不佳,之后我们分析了改进并发模型的策略,并对比了Actor并发模型与JAVA的多线程模型,对比的结果是采用Actor并发模型,应用的多方面性能会得到显著的提升。二、分析了目前多款主流的AJAX及comet框架并抽象了它们的本质共性,在对比了REST架构风格基础上,本文提出了SPIAR架构风格,该架构风格具有强化交互性、消息的实时性,利于数据的一致性等特点。该架构风格的提出是针对目前Comet框架设计方法实现技术千差万别的基础上提出的,目的是用一种统一的架构风格进行描述,这样做的优点是:1)设计可重用,方便将该方案应用到新的问题;2)使设计易理解,易于交流。三、本文利用了Erlang对并发以及分布式特性的支持,设计并实现了MyComet框架。相比于CometD框架MyComet做了一下主要改进:1)使用了Erlang能够创建大量进程的优势,支持更高的并发请求;2)服务器间的通信采用进程间通信方式,使得系统就有更好的通信效率和容错性;3)改进了消息的路由方式,使分布式的处理完全透明化。最后文章给出MyComet框架的性能测试。