一、传统并发模型的缺点
基于线程的并发
特点:每任务一线程直线式的编程使用资源昂高,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 eclipse工程可运行版` 提供了一个基于SEDA架构的实际应用示例,可以帮助开发者更好地理解和实践这种高性能的服务器架构模型。通过使用Eclipse IDE,开发者可以便捷地调试和优化代码,适应各种复杂的...
在SEDA架构中,每个阶段都有一个“Actor controller”,负责确定该阶段的理想并发度。控制器通过对队列的监控和管理,动态调整服务的并发处理能力,以适应不断变化的工作负载。 在实际应用中,我们可以结合消息系统...
阶段事件驱动架构(Staged Event-Driven Architecture, SEDA)是由加州大学伯克利分校提出的一种高性能互联网服务器架构模型。SEDA的目标是支持大规模并发处理、简化系统开发、支持处理监测和支持系统资源管理。SEDA...
SEDA架构的基础是事件驱动模型。在这一模型中,系统中的各个组件通过发送和处理事件来协同工作。事件可以被视为系统内部状态改变的抽象表示,当一个事件发生时,相应的处理器或阶段会接收到这个事件并执行相应的...
2. **异步事件驱动**:在SEDA架构中,各个阶段之间通过事件通知的方式进行通信,而不是同步等待响应。这可以有效地减少阻塞时间,提高系统的响应速度和吞吐量。 3. **资源管理与负载均衡**:SEDA模型还支持动态资源...
早期的BPM系统通常采用单一的、集成式的架构,例如分布式SEDA架构,这种架构中,流程引擎紧密地嵌入到应用系统内部,通过Java API或HTTP接口与应用逻辑交互。数据库和J2EE服务器支持应用界面与流程引擎的交互,实现...
因此,SEDA作为一种更为先进的架构,它将处理流程划分为多个阶段,如输入队列、预处理、业务逻辑处理和输出队列等,每个阶段都有独立的线程池来处理各自的任务。这种设计使得服务器能够更好地分配资源,每个阶段可以...
面向交易的服务平台是一种专门设计用于处理交易类系统的架构模型,其目的是在不确定的环境中提供稳定、高效和可靠的服务。交易类系统通常涉及到金融行业的中间业务、银行卡操作以及网上银行业务等,它们要求高度的...
比如分布式事务的处理,由于服务分布在不同的节点上,传统的ACID事务模型不再适用,需要采用分布式事务解决方案,如两阶段提交协议(2PC)、分布式事务中间件等。差错排查同样是一个挑战,微服务架构中服务众多,...
- 计算模型使用Processor和Pipeline,定义输入输出,分配资源,如SEDA(分阶段事件驱动架构),通过多个阶段和线程池处理事件。 9. **依赖管理和数据更新**: - 根据数据生成和使用的关系,建立Processor间的依赖...
针对Web服务集成过程中分阶段事件驱动架构(SEDA)仅考虑服务集成架构的资源消耗,而对被集成的服务及由其构成的任务资源耗费考虑不足的问题,提出了分阶段优先级事件驱动架构(SPEDA).选取评价指标,通过熵权法对事件...
Mule采用了SEDA(Staged Event-Driven Architecture)模型,这是一种事件驱动的架构模式,通过将应用程序分成多个阶段来实现高吞吐量和可伸缩性。 8. 强大的基于EIP模式的事件路由机制: 事件驱动模式(EIP)允许...
4. 网络协议和服务框架:需要掌握HTTPServer、Gateway、SEDA原理,以及Netty的启动和执行过程、服务端和客户端的使用方式、事件驱动线程模型、Netty技术原理、NIO技术常见的API等。 5. 性能优化:包括内存管理、...
Storm的架构模型包括Nimbus、Supervisor、Worker node和Executor四个部分,能够实现高性能和高可用的报文交换。 在设计AIDC分布式交换机制时,本文讨论了三种交换技术:基于线程的并发技术、事件驱动交换技术和SEDA...
SEDA(Simple Event Driven Architecture)是一种基于事件驱动的架构模式,在Mule中用于处理异步消息。 1. **接收消息**:首先,SEDA接收到来自客户端的消息。 2. **消息队列**:将接收到的消息放入队列中等待处理...
SEDA(Staged Event-Driven Architecture)事件驱动架构是Netty内部处理事件的主要模式之一。它将整个事件处理流程划分为多个阶段(Stage),每个阶段都有专门的任务负责处理该阶段的事件。这种方式有效地解决了多线程...