//
SEDA架构模型 - 简书
//www.greatytc.com/p/e184fdc0ade4
//
一、传统并发模型的缺点
基于线程的并发
特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。
//
基于事件的并发模型
特点:单线程处理事件每个并发流实现为一个有限状态机应用直接控制并发负载增加的时候,吞吐量饱和响应时间线性增长
//
二、SEDA架构
特点:
(1)服务通过queue分解成stage: 每个stage代表FSM的一个状态集合 Queue引入了控制边界
(2)使用线程池驱动stage的运行: 将事件处理同线程的创建和调度分离 Stage可以顺序或者并行执行 Stage可能在内部阻塞,给阻塞的stage分配较少的线程
//
三、小结
SEDA主要还是为了解决传统并发模型的缺点,通过将服务器的处理划分各个Stage,利用queue连接起来形成一个pipeline的处理链,并且在Stage中利用控制器进行资源的调控。资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制,而stage的划分也简化了编程,并且通过queue和每个stage的线程池来分担高并发请求并保持吞吐量和响应时间的平衡。简单来说,我看中的是服务器模型的清晰划分以及反应控制。
//
基于SEDA模型的交易中间件服务器架构研究_百度学术
http://xueshu.baidu.com/s?wd=paperuri:(334b6c1fae6861e2113e1e70c6442314)&filter=sc_long_sign&sc_ks_para=q%3D%E5%9F%BA%E4%BA%8ESEDA%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%A4%E6%98%93%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84%E7%A0%94%E7%A9%B6&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_us=3847411028352465752
在大型分布式企业环境中,应用通常面对着异构的网络环境、不同的硬件平台以及相异的通讯协议。如果通过应用自身来解决服务器之间的通讯所带来的数据、协议转换问题,毫无疑问将严重影响应用开发的复杂程度和开发效率。而使用中间件(Middleware)可以轻松解决这些问题。针对民航业务实时并发请求多、业务功能复杂多变、数据量大、业务之间联系密切等业务特点设计了中间件服务器的软件架构。
本文分析当前流行的服务器并发模型的优缺点,选择了分阶段的事件驱动架构(Staged Event‐Driven Architecture,SEDA)作为服务器的架构基础,以SEDA分阶段思想对民航业务进行阶段划分,设计分布式环境下的中间件平台部署及运行结构,以两层SEDA共同完成对用户业务分阶段特性的支持。该架构使得应用开发人员无需关心异步调用细节,这大大降低了应用开发的复杂程度,提升了开发效率。
实验结果表明基于SEDA的服务器软件架构比基于线程池模型的服务器软件架构拥有更好的处理高并发服务请求的能力,能够使大规模民航旅客服务信息系统有效应对高并发高负载环境。同时本文分析了中间件平台的总体结构,根据其结构特点设计了负载均衡机制,提出了固定比例因子负载均衡算法并进行鲁棒性分析。为了提高中间件平台的鲁棒性和可靠性,根据其软硬件结构特点在固定比例因子负载均衡算法的基础上提出了动态负载均衡算法。同时设计了维护负载度量指标所需的数据结构以及在这种数据结构下维护该指标的方法,并进行了实验对比验证。实验结果表明负载均衡算法能使中间件平台的鲁棒性和可靠性得到提升。