`
kanpiaoxue
  • 浏览: 1789377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SEDA架构

 
阅读更多

纯粹转发,没有深入研究,转自:SEDA架构笔记

 

一、传统并发模型的缺点

基于线程的并发


特点:
每任务一线程
直线式的编程
使用资源昂高,
context切换代价高,竞争锁昂贵
太多线程可能导致吞吐量下降,响应时间暴涨。

 

基于事件的并发模型


特点:
单线程处理事件
每个并发流实现为一个有限状态机
应用直接控制并发
负载增加的时候,吞吐量饱和
响应时间线性增长

二、SEDA架构


特点:
(1)服务通过queue分解成stage:
   每个stage代表FSM的一个状态集合
   Queue引入了控制边界
(2)使用线程池驱动stage的运行:
   将事件处理同线程的创建和调度分离
   Stage可以顺序或者并行执行
   Stage可能在内部阻塞,给阻塞的stage分配较少的线程

1、Stage-可靠构建的基础


(1)应用逻辑封装到Event Handler
   接收到许多事件,处理这些事件,然后派发事件加入其他Stage的queue
   对queue和threads没有直接控制
   Event queue吸纳过量的负载,有限的线程池维持并发
(2)Stage控制器
  负责资源的分配和调度
  控制派发给Event Handler的事件的数量和顺序
  Event Handler可能在内部丢弃、过滤、重排序事件。

2、应用=Stage网络

   (1)有限队列 
        入队可能失败,如果队列拒绝新项的话
        阻塞在满溢的队列上来实现吸纳压力
        通过丢弃事件来降低负载
   (2) 队列将Stage的执行分解
        引入了显式的控制边界
        提供了隔离、模块化、独立的负载管理
   (3)方便调试和profile
        事件的投递可显
        时间流可跟踪
        通过监测queue的长度发现系统瓶颈

3、动态资源控制器

(1)、线程池管理器

目标: 决定Stage合理的并发程度
操作:
观察queue长度,如果超过阀值就添加线程
移除空闲线程


(2)、批量管理器
目的:低响应时间和高吞吐量的调度
操作:
Batching因子:Stage一次处理的消息数量
小的batching因子:低响应时间
大的batching因子:高吞吐量

尝试找到具有稳定吞吐量的最小的batching因子
观察stage的事件流出率
当吞吐量高的时候降低batching因子,低的时候增加


三、小结
   SEDA主要还是为了解决传统并发模型的缺点,通过将服务器的处理划分各个Stage,利用queue连接起来形成一个pipeline的处理链,并且在Stage中利用控制器进行资源的调控。资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制,而stage的划分也简化了编程,并且通过queue和每个stage的线程池来分担高并发请求并保持吞吐量和响应时间的平衡。简单来说,我看中的是服务器模型的清晰划分以及反应控制。

分享到:
评论

相关推荐

    seda架构

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

    基于SEDA架构的网格服务容器设计与实现.pdf

    SEDA架构是一种分阶段的事件驱动架构,其主要目标是提高并发处理的性能和系统的可伸缩性。SEDA的架构设计将服务容器分解为多个阶段,每个阶段处理不同的事件,并通过异步通信机制实现非阻塞I/O操作,这有助于系统...

    seda eclipse工程可运行版

    - **事件处理器(Event Handler)**:这是SEDA架构的基础单元,每个处理器负责执行特定的操作。当事件到达处理器时,它会处理该事件并可能生成新的事件。 - **事件队列(Event Queue)**:作为不同处理阶段之间的...

    seda-release

    SEDA架构的基础是事件驱动模型。在这一模型中,系统中的各个组件通过发送和处理事件来协同工作。事件可以被视为系统内部状态改变的抽象表示,当一个事件发生时,相应的处理器或阶段会接收到这个事件并执行相应的...

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

    SEDA架构将处理流程划分为多个独立的阶段,每个阶段专注于一个特定的任务,如数据验证、业务逻辑处理、持久化等。这种分治策略降低了系统的复杂性,使得代码更易于维护和扩展。 3. **线程池与并发控制**: 在SEDA...

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

    在SEDA架构中,每个阶段都有一个“Actor controller”,负责确定该阶段的理想并发度。控制器通过对队列的监控和管理,动态调整服务的并发处理能力,以适应不断变化的工作负载。 在实际应用中,我们可以结合消息系统...

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

    2. **异步事件驱动**:在SEDA架构中,各个阶段之间通过事件通知的方式进行通信,而不是同步等待响应。这可以有效地减少阻塞时间,提高系统的响应速度和吞吐量。 3. **资源管理与负载均衡**:SEDA模型还支持动态资源...

    企业级BPM之微服务架构演进.pdf

    早期的BPM系统通常采用单一的、集成式的架构,例如分布式SEDA架构,这种架构中,流程引擎紧密地嵌入到应用系统内部,通过Java API或HTTP接口与应用逻辑交互。数据库和J2EE服务器支持应用界面与流程引擎的交互,实现...

    交易系统设计 面向交易的服务平台 共22页.pptx

    在SEDA架构中,不同的处理阶段可以通过不同的通道(如TCP、HTTP、MQ通道)进行交互,利用消息框架如Java内存队列或外部持久化队列进行通信。Spring Integration提供了如DirectChannel、PollableChannel、...

    SpringBoot、

    - **整合服务执行交付架构**:SEDA 是一种基于消息队列的服务执行交付架构,它能够有效提升系统的响应能力和吞吐量。将 SEDA 与 Spring Boot 结合使用,可以更好地实现微服务间的异步通信。 - **RESTful 接口设计*...

    智慧银行历史数据平台建设方案.pptx

    SEDA架构用于动态并发调度,提高了系统性能。同时,平台还提供了在线监控和管理系统,以便对IT资源、平台和集群进行实时管理和配置。 5. **应用场景**: - 平台的应用场景广泛,包括客户分析、运营分析、经营决策...

    aggregate-framework:Aggregate Framework是为方便开发人员运用DDD和CQRS思想来构建复杂的、可扩展的Java企业应用系统而提供的Java技术框架。该框架提供了Aggregate、Repository、Domain Event等构建块的实现;使用DomainEvent,借助于内建的Disruptor组件,AggregateFramework可使开发人员方便的实现高性能SEDA架构。此外,该框架支持与Spring集成,提供使用 annotation的方式让开发人员方便地

    Aggregate Framework概述 Aggregate Framework是基于DDD和CQRS思想而开发的一个领域驱动框架。其主要目标是方便开发人员运用DDD和CQRS思想来构建复杂的、可扩展的应用系统。该框架提供了最核心的构建块的实现,比如...

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

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

    Raindrop-开源

    SEDA架构的核心思想是将一个复杂的系统分解为多个独立的阶段,每个阶段都有专门的线程处理特定任务,通过事件队列进行通信,以降低系统的耦合度并提高并发处理能力。 Raindrop框架的主要目标是优化并发性能,特别是...

    ehensin-seda:舞台事件驱动架构

    **ehensin-seda: 舞台事件驱动架构** `ehensin-seda` 是一个基于Java平台的舞台事件驱动架构(Stage Event-Driven Architecture)。这种架构模式主要用于构建高性能、高并发的应用程序,尤其在处理大量并发请求时,...

    mule & seda 学习二.docx

    Seda,全称为Staged Event-Driven Architecture(分阶段事件驱动架构),是一种处理高并发事件流的设计模式。在Seda模型中,事件处理被分解为多个阶段,每个阶段都有自己的队列来缓冲输入和输出,这样可以实现并行...

Global site tag (gtag.js) - Google Analytics