并发框架SEDA
2016-04-22 10:15
183 查看
应用程序开发中经常采用多线程模型(如下图),工作原理一般是对于每一个request,dispatcher会为其创建并分配一个线程,该线程负责这个请求的处理。这种模式优点是处理逻辑清晰,容易开发,执行粒度也是整个完整的处理流程。
但是也存在缺点,随着处理请求不断增加,导致并发执行的线程数量太多,过多的线程数量导致系统在线程调度和资源争用上的开销过大,引起系统性能急剧下降,经常是难以检测系统性能瓶颈的根源,以下是线程数和吞吐量的一个测试数据,可以较直观说明问题。
为解决上述问题,出现了以下事件驱动优化模型,工作原理是将处理流程分割成多个步骤,每一个步骤都实现为一个有限状态机(FSM),所有的处理请求会作为Event进入系统。由Scheduler负责传递给相应FSM。FSM的处理结果也以Event形式输出给Scheduler。新的Event会再次被Scheduler进行转发给下一个FSM,直至处理完成(如下图所示,感觉很熟悉哦)。
这种模型的优点是单线程处理事件,负载增加的时候,吞吐量相对平稳。缺点是Scheduler的设计和实现过于复杂,针对于不同的应用和系统的逻辑变更需要不同的实现,以下是吞吐量测试的一个数据:
学院派关注到这个问题,加州大学伯克利分校研究出一套优秀的高性能互联网服务器架构模型,设计目标是支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理等: Staged Event Driven Architecture (SEDA)。
SEDA实现上,将业务的处理划分各个Stage,利用queue连接起来形成一个pipeline的处理链,并且在Stage中利用控制器进行资源的调控。资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制。
Stage的划分也简化了编程,并且通过queue和每个stage的线程池来分担高并发,请求并保持吞吐量和响应时间的平衡,具体的Stage模型如下,一个接受输入的EventQueue,一个应用开发者编写的Event
Handler,一个Controller用于对执行过程进行控制。包括并发线程数量,一个Thread Pool用于并发处理。
Spring 出品了Spring Integration框架实现了上述模型,通过Message,Channel,Route模型实现了基本功能,支持请求订阅,请求响应(点对点)等多种交互模型。
详细:[伯克利大学]SEDA An Architecture for Well-Conditioned,Scalable Internet Services.pdf
但是也存在缺点,随着处理请求不断增加,导致并发执行的线程数量太多,过多的线程数量导致系统在线程调度和资源争用上的开销过大,引起系统性能急剧下降,经常是难以检测系统性能瓶颈的根源,以下是线程数和吞吐量的一个测试数据,可以较直观说明问题。
为解决上述问题,出现了以下事件驱动优化模型,工作原理是将处理流程分割成多个步骤,每一个步骤都实现为一个有限状态机(FSM),所有的处理请求会作为Event进入系统。由Scheduler负责传递给相应FSM。FSM的处理结果也以Event形式输出给Scheduler。新的Event会再次被Scheduler进行转发给下一个FSM,直至处理完成(如下图所示,感觉很熟悉哦)。
这种模型的优点是单线程处理事件,负载增加的时候,吞吐量相对平稳。缺点是Scheduler的设计和实现过于复杂,针对于不同的应用和系统的逻辑变更需要不同的实现,以下是吞吐量测试的一个数据:
学院派关注到这个问题,加州大学伯克利分校研究出一套优秀的高性能互联网服务器架构模型,设计目标是支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理等: Staged Event Driven Architecture (SEDA)。
SEDA实现上,将业务的处理划分各个Stage,利用queue连接起来形成一个pipeline的处理链,并且在Stage中利用控制器进行资源的调控。资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制。
Stage的划分也简化了编程,并且通过queue和每个stage的线程池来分担高并发,请求并保持吞吐量和响应时间的平衡,具体的Stage模型如下,一个接受输入的EventQueue,一个应用开发者编写的Event
Handler,一个Controller用于对执行过程进行控制。包括并发线程数量,一个Thread Pool用于并发处理。
Spring 出品了Spring Integration框架实现了上述模型,通过Message,Channel,Route模型实现了基本功能,支持请求订阅,请求响应(点对点)等多种交互模型。
详细:[伯克利大学]SEDA An Architecture for Well-Conditioned,Scalable Internet Services.pdf
相关文章推荐
- 使用while 打印10~1,1~10
- Spark IDEA 调试(反编译)
- 对象创建,内存布局,对象的访问定位
- ios不够看的了,开始准备学习安卓!!!
- 20个正则表达式必知(能让你少写1,000行代码)
- linux awk命令详解
- 4月20日全球六大国际域名解析量:.COM增势最强劲
- 动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)
- Memcached简介及优缺点
- [概率DP] BZOJ 3036 绿豆蛙的归宿
- 关于Tomcat的URIEncoding以及GET乱码
- 删除pods
- Android 5.0 Material 自定义Dialog 背景 字体大小颜色 ui组件颜色
- Eclipse中的引用项目报Could not find *.apk!解决办法
- 使用android studio开发时支持Lambda语法
- JS简单循环遍历json数组的方法
- 数据结构以孩子兄弟链存储的树的高度
- Ganglia监控hadoop、hbase集群
- OkHttp
- iOS开发中的内存管理