基于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的试验田。
相关推荐
**基于SEDA的异步框架设计与实现** SEDA(Staged Event-Driven Architecture)是一种软件架构模式,常用于高性能、高并发的应用程序设计。它将系统分解为多个独立的阶段,每个阶段处理特定类型的事件,并通过队列...
SEDA模型的核心思想是将复杂的并发操作分解为一系列简单的、可串行化的阶段,每个阶段负责处理特定的任务,并通过事件触发机制来推进整个处理流程。 #### 三、SEDA模型应用于ESB的设计 ##### 3.1 需求分析 在高...
SEDA(Staged Event Driven Architecture,分阶段事件驱动架构)是一种有效的方法,它通过非阻塞、异步化和队列的策略来提高系统的性能和稳定性。本篇将深入探讨SEDA的原理和应用,以及如何结合实际经验来优化服务端...
**SEDA(Staged Event Driven Architecture)**是一种在高性能计算和互联网服务中广泛应用的架构模型,由加州大学伯克利分校的研究团队提出。它的核心思想是将复杂的系统分解为一系列独立的、有序的处理阶段,每个...
SEDA将复杂的、实时的系统分解为一系列可管理的阶段,每个阶段专注于特定的任务,通过事件队列进行阶段间的通信。这种架构模式在处理大规模并发请求时表现优异,因为它能够通过异步处理和资源隔离来提高系统的可扩展...
### 基于SEDA的企业服务总线的设计与实现 #### 概述 本文主要探讨了如何通过...未来的研究可以进一步探索SEDA模型在其他领域的应用潜力,以及如何结合最新的云计算技术和大数据处理框架来进一步提升ESB的性能和功能。
SEDA,全称为Staged Event Driven Architecture,是一种在高性能计算领域被广泛采用的软件架构模式,最初由加州大学伯克利分校的研究团队提出。该架构设计的核心思想是将复杂的、高并发的应用程序分解为一系列独立的...
SEDA架构是一种分阶段的事件驱动架构,其主要目标是提高并发处理的性能和系统的可伸缩性。SEDA的架构设计将服务容器分解...在未来的网格计算研究和实践中,SEDA架构作为一种有效的设计模式,预计将得到更加广泛的应用。
【标题】:“2017-11-07 Seda 安装配置笔记1”描述了一次在Ubuntu 14.04环境下对Seda软件的安装与配置过程,涉及了VMware虚拟机、依赖软件的安装、LLVM与Clang的编译以及Seda的编译和配置。 【描述】:首先,安装...
通过以上内容,我们可以理解“seda过载保护”不仅仅是一个技术问题,而是一个涉及到系统设计、资源管理和互联网服务鲁棒性的整体问题。在未来的互联网服务和分布式系统设计中,如何合理地引入和管理过载保护机制将...
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括: 1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker). 2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等. 3.支持...
SEDA(Staged Event-Driven Architecture)是一种针对高性能服务器设计的体系结构,它借鉴了流水线的概念,将处理过程分解为一系列独立的阶段,每个阶段由一组专门的线程处理,通过事件驱动来协调各个阶段的工作。...
唤醒Wake是一个事件驱动的框架,基于SEDA,Click,Akka和Rx的思想。 从某种意义上说,它是通用的,旨在支持计算密集型应用程序以及高性能网络,存储和旧版I / O系统。 我们实现了Wake以支持高性能,可扩展的分析处理...
Netty是一个高性能、异步事件驱动的网络应用程序框架,适用于快速开发可维护的高性能协议服务器与客户端。该框架利用Java NIO来实现Reactor模式,这种模式通过同步等待多个I/O事件的发生,然后通过多路复用机制将...
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
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/...