【SEDA异步框架】【一】SEDA国内外研究现状
基于SEDA的异步框架设计与实现
一、SEDA国内外研究现状
1、SEDA架构的起源和特点 当前最流行的互联网服务器模型基本都是基于多线程/进程并发服务模型。然而当线程数目增加到一定值后,系统性能会下降,这就限制了系统支持高并发请求的能力。这种缺陷是多线程/进程本身的架构造成的。加州大学伯克利分校的Matt Welsh提出了一种新的服务器软件架构SEDA。SEDA是Staged Event-Driven Architecture的 缩略语,其基本原理是:应用程序被构造为阶段网络,阶段之间靠事件队列联系,应用程序设计者只负责每个阶段的服务逻辑和阶段间的连接逻辑,而由各阶段自身 负责资源管理和负载适应功能。使用这种分解使系统达到高并发性、高效率性、对负载变化的良好适应性以及良好的系统缩放性。
2、SEDA架构应用情况
目前SEDA架构在国外已经受到了很多开发人员的青睐。在国外,SEDA架构已经在很多科研机构中被用以进行成熟的学术研究以及实践应用。加州大学伯克利分校、哈佛大学、普林斯顿大学以及微软研究所等闻名于世的大学和科研机构。Matt Welsh博士及其团队已经基于JAVA实现了SEDA架构——Standstorm,并基于此开发了几个应用服务器系统。劳伦斯伯克利国家实验室同样提供了依照SEDA架构开发了开源项目SEA。spring也推出了基于SEDA架构的spring-batch。与此同时,SEDA也已经被用以进行企业级的应用开发。著名的开源企业服务总线(ESB)——Mule即实现了SEDA架构。 与国外欣欣向荣的SEDA架构发展现状相比,国内目前使用SEDA架构的企业仍然不多,大多的企业仍然由于技术成本以及其他原因,更倾向于使用主流的多线程、事件驱动服务器模型进行开发。这就导致了在遭遇高并发环境的时候,相当多的企业只能被动地进行硬件升级,而未能很好地利用服务器资源。虽然SEDA在国内多仍停留在起步阶段,但是仍然可以看到包括百度、58同城在内的少数互联网企业已经在内部推广SEDA架构
3、目前仍存在的问题
采用SEDA架构的系统一般都会面临两个值得关注的问题,其一: 即如何合理地进行资源的初始化分配。如果未能进行合理地线程以及队列资源分配,导致出现资源需求较大的阶段被分配了数量不足的线程数,或者资源需求较小的 阶段被分配了数量过多的线程数,则会造成系统吞吐量的下滑,甚至会导致系统性能在高并发下远低于多线程模型系统。其二,如何合理地对系统进行阶段划分,不 合理的阶段划分将导致系统性能的下滑。要解决这两个问题就必须在很大程度上依赖于架构搭建者对于系统的熟悉程度以及数据量的评估。SEDA架构的提出者 Matt Welsh博士就曾收到非常多开发者对于SEDA架构性能的质疑信件,他也对此做出了相应的解释。所以如何合理使用SEDA架构,是所有架构搭建者在搭建 SEDA时必须仔细考虑的。
4、今后发展的趋势
随着互联网信息爆炸式的增长,越来越多的互联网服务器将遭遇高并发、海量数据的环境。在这种环境下,多线程以及事件驱动模型服务器已经无法适应。SEDA 架构在高并发下优异的性能表现,已经引起了越来越多企业的关注,而且该架构也体现了SOA的思想,符合以后企业进行分布式SOA系统开发的需求。所以可以 预见,接下来的时间里,SEDA将会得到广泛地应用,在互联网SOA系统中扮演不可或缺的角色。而在这之中,互联网消息提醒系统由于消息处理和消息发送之 间可能具有巨大的资源消耗差异性,已经首当其冲地成为了SEDA的试验田。