基于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的试验田。
相关推荐
NULL 博文链接:https://ailikes.iteye.com/blog/2233024
基于SEDA的企业服务总线的设计与设计,清晰地讲解了SEDA的结构与设计原理,为高并发网络响应提供了一种实现思路
we call the staged event-driven architecture (SEDA). SEDA is intended to support massive concurrency demands and simplify the construc- tion of well-conditioned services. In SEDA, applications consist...
Staged Event Driven Architecture (SEDA) 是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型
【大纲】 服务端软件=排队服务 回顾常见的并发模型 介绍SEDA 分享我们的经验
NULL 博文链接:https://xylong.iteye.com/blog/1441956
seda过载保护
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括: 1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker). 2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等. 3.支持...
Staged Event Driven Architecture (SEDA) 是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型
基于SEDA的企业服务总线的设计与实现,基于SEDA的企业服务总线的设计与实现
唤醒Wake是一个事件驱动的框架,基于SEDA,Click,Akka和Rx的思想。 从某种意义上说,它是通用的,旨在支持计算密集型应用程序以及高性能网络,存储和旧版I / O系统。 我们实现了Wake以支持高性能,可扩展的分析处理...
1、安装环境 2、安装依赖软件 3、安装配置Seda 4、测试seda能否正常工作
SEDA(StagedEvent-DrivenArchitectrue)--兼谈服务器体系结构设计一.引言
采用分级事件驱动架构SEDA(Staged Event Driven Architecture),通过划分阶段Stage的方式解除耦合,在阶段之间采用事件进行异步消息通信,结合非阻塞的I/O机制设计实现了一个事件驱动的网格服务容器,并从吞吐量、...
mule & seda 学习二.docx
基于SEDA架构的网格服务容器设计与实现.pdf
SEDA: An Architecture for Scalable,Well-Conditioned Internet ServicesMatt Welsh, David Culler, and Eric BrewerUC Berkeley Computer Science Division mdw@cs.berkeley.eduhttp://www.cs.berkeley.edu/~mdw/...
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括: 1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker). 2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等. 3.支持...
Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是通过消息端点(message endpoint)来进行...
Aggregate Framework是基于DDD和CQRS思想而开发的一个领域驱动框架。其主要目标是方便开发人员运用DDD和CQRS思想来构建复杂的、可扩展的应用系统。该框架提供了最核心的构建块的实现,比如Aggregate、Repository和...