`

Staged Event Driven Architecture (SEDA) 介绍

    博客分类:
  • SOA
阅读更多

一、前言

二、当前流行的两种并发处理编程模型

三、 SEDA 架构

四、小结

五、参考文献

 

一、前言

Staged Event Driven Architecture (SEDA) 是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型。其设计目标是:支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理。本文会先对两种目前被广泛使用的网络服务器架构模型进行介绍。然后对 SEDA 进行详细描述。

 

二、当前流行的两种并发处理编程模型

1、 多线程服务器 (Threaded Server)

工作原理:对于每一个 request dispatcher 会为其创建并分配一个线程。该线程负责这个请求的处理。这种方式 又名( Thread-per-request )。

优点:执行粒度是整个完整的处理流程。处理逻辑清晰,容易开发。

缺点:是当随着处理请求不断增加,导致并发执行的线程数量太多。过多的线程数量导致系统在线程调度和资源争用上的开销过大。引起系统性能急剧下降。导致系统处理能力下降。

 

改进措施:线程池( Bounded Thread Pools

系统最多只能创建一定数量的线程。当所有线程都饱和运行时,新到达的处理请求只能等待,或者被抛弃。

缺点:

执行粒度仍然是完整的处理流程。难以检测系统性能瓶颈的根源以及进行相应调整。 /p>

 

2、 事件驱动并发处理 (Event-Driven Concurrency)

 

将处理流程分割成多个步骤,每一个步骤都实现为一个有限状态机( FSM )。

工作原理:所有的处理请求会作为 Event 进入系统。由 Scheduler 负责传递给相应 FSM FSM 的处理结果也以 Event 形式输出给 Scheduler 。新的 Event 会再次被 Scheduler 进行转发给下一个 FSM 。直至处理完成。

 

优点:

1 、随着处理量的增加,系统负荷是以线形增长。当达到系统饱和处理能力后。系统的处理能力不会下降。

2 、由于将各个处理步骤独立实现,可以很容易的进行系统监测和调整。

 

缺点:

Scheduler 的设计和实现过于复杂。针对于不同的应用和系统的逻辑变更需要不同的实现。

 

三、 SEDA 架构

 

( 近似于 Event-Driven Concurrency ,但是没有其中的 Scheduler)

将每一个处理步骤独立为一个 Stage

 

Stage 结构:

1、 一个接受输入的 Event Queue

2、 一个应用开发者编写的 Event Handler

3、 一个 Controller 用于对执行过程进行控制。包括并发线程数量,批处理数量, …;

4、 一个 Thread Pool 用于并发处理;

Stage 的输入通过 Event Queue 获得。 Stage 的输出会以 Event 形式推送到其他 Stage Event Queue 中。 Stage 之间的这种连接关系由应用开发人员指定。

 

带来的问题: Event Queue 尽管减少了模块间的耦合性,但是会降低响应速度。

 

四、小结:

SEDA 架构将应用的整个处理过程分割为多个步骤即 Stage 。每个 Stage 可以独立进行开发。同时 Stage 之间通过 Event Queue 来进行通信,可以降低耦合性。可以以很小的成本来适应将来的系统逻辑变化。

同时系统提供了标准的资源控制,使得应用开发人员只需要专注于实现 Event Handler 的内部逻辑。而无须关注多线程、资源共享、

同时可以在运行时对于每一个 Stage 的运行情况进行监测以及调整。

 

五、参考文献 http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf

 

http://larryzhu.bokee.com/6779982.html

分享到:
评论

相关推荐

    seda-release

    **SEDA(Staged Event Driven Architecture)框架详解** SEDA,全称为Staged Event Driven Architecture,是一种在高性能计算领域被广泛采用的软件架构模式,最初由加州大学伯克利分校的研究团队提出。该架构设计的...

    seda eclipse工程可运行版

    **SEDA(Staged Event Driven Architecture)**是一种在高性能计算和互联网服务中广泛应用的架构模型,由加州大学伯克利分校的研究团队提出。它的核心思想是将复杂的系统分解为一系列独立的、有序的处理阶段,每个...

    如何利用SEDA提高系统的性能和稳定性 开发可掌控高并发服经验分享:非阻塞+异步化+队列 共19页.pptx

    SEDA(Staged Event Driven Architecture,分阶段事件驱动架构)是一种有效的方法,它通过非阻塞、异步化和队列的策略来提高系统的性能和稳定性。本篇将深入探讨SEDA的原理和应用,以及如何结合实际经验来优化服务端...

    基于SEDA的异步框架设计与实现

    SEDA(Staged Event-Driven Architecture)是一种软件架构模式,常用于高性能、高并发的应用程序设计。它将系统分解为多个独立的阶段,每个阶段处理特定类型的事件,并通过队列进行异步通信。这种方式允许各个组件...

    seda架构

    SEDA(Staged Event-Driven Architecture),即分阶段事件驱动架构,是一种面向服务的设计架构,主要用于解决高性能、高并发系统中的设计问题。SEDA将复杂的、实时的系统分解为一系列可管理的阶段,每个阶段专注于...

    SEDA的企业服务总线的设计与实现

    阶段事件驱动架构(Staged Event-Driven Architecture, SEDA)是由加州大学伯克利分校提出的一种高性能互联网服务器架构模型。SEDA的目标是支持大规模并发处理、简化系统开发、支持处理监测和支持系统资源管理。SEDA...

    SEDA-兼谈服务器体系结构设计.doc

    SEDA(Staged Event-Driven Architecture)是一种针对高性能服务器设计的体系结构,它借鉴了流水线的概念,将处理过程分解为一系列独立的阶段,每个阶段由一组专门的线程处理,通过事件驱动来协调各个阶段的工作。...

    mule esb 的简单介绍

    7. **基于SEDA(Staged Event-Driven Architecture)的处理模型**:这使得Mule能够处理高并发和大规模的事务,确保系统的可伸缩性。 8. **基于EIP(Enterprise Integration Patterns)的事件路由**:Mule ESB利用...

    普元ESB服务总线产品

    1. **高性能**:通过采用多进程管理、SEDA(Staged Event-Driven Architecture)和NIO(Non-blocking I/O)等先进技术,普元ESB在不依赖Java EE容器的情况下,有效分散了性能瓶颈,显著提升了系统处理效率,确保了...

    No.1HBase3.0张铎.pdf

    写路径重构采用了 Staged Event-Driven Architecture(SEDA),这种架构将数据写入过程分为几个阶段,包括写 WAL、更新 memstore 和完成 MVCC(多版本并发控制)。这种按阶段处理写操作的方法可以减少数据丢失的风险...

    Mina_in_real_life_ASEU-2009.pdf

    Mina 最初是为了满足 ADS 对 SEDA(Staged Event Driven Architecture)架构的需求而开发的。早期的 Netty 虽然表现出色,但为了更好地适应需求变化,MINA 经历了全面重写,并最终成为一个顶级项目(TLP)。 #### ...

    MuleEsb开源框架简介.pdf

    Mule ESB的处理模型基于SEDA(Staged Event-Driven Architecture),这使得它具有高度的可伸缩性,适合处理大规模的并发事件。同时,Mule ESB拥有强大的基于Enterprise Integration Patterns(EIP)的路由机制,能够...

    MULE IN ACTION

    Mule采用了SEDA(Staged Event-Driven Architecture)模型,这是一种事件驱动的架构模式,通过将应用程序分成多个阶段来实现高吞吐量和可伸缩性。 8. 强大的基于EIP模式的事件路由机制: 事件驱动模式(EIP)允许...

    Spring Boot浅谈(是什么/能干什么/优点和不足).docx

    - **SpringBoot与SEDA+MicroService+RESTful**:SEDA(Staged Event-Driven Architecture)是一种处理大量并发事件的架构模式,Spring Boot可以用于构建微服务,提供RESTful API。结合两者,可以构建高性能、可扩展...

    MULE开发文档

    它采用的是基于SEDA(Staged Event-Driven Architecture)的服务容器,有效地管理服务对象——即所谓的UMO(Universal Message Objects)。UMO本质上是普通的Java对象(POJO),因此,它们易于理解和开发。 MULE...

Global site tag (gtag.js) - Google Analytics