SEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stag,不同资源消耗的Stag使用不同数量的线程来处理,Stag间使用事件驱动的异步通信模式。

更进一步,在每个Stage中可以动态配置自己的线程数,在超载时降级运行(如输出纯文字页面)或拒绝服务。

在每个Stage的通常有如下组件:

Incoming Event Queue ,事件队列。 Admission Controller  阀门,拒绝服务。 Dynamically sized Thread Pool, 线程池。 Event Handler ,实际处理业务的Compinent。 Resource Controller ,控制Stage的参数。 2.Web2.0+SOA环境下的SEDA应用     Web2.0对架构师提出了新的挑战 ,  JavaEE 的同步调用机制(除JMS),有限的线程池与连接池(超出范围性能会下降),固定的定义在JNDI的资源对Web2.0/SOA的需求并不吻合。对BEEP,SCTP这些协议,必须依靠JCA另行编写模块来实现长连接模型。

Java EE 迎合 Web 2.0(IBM DW) 提出,从统计学上看在系统总线程数固定的情况下,使用SEDA能获得较高的Throughput,阶段间的资源差异越大就越明显。     比如处理一个Web 2.0常用Mashup请求,有如下几步:

接收用户请求(1单位时间) 数据库查询(4单位时间) 根据数据库查询结果,准备Web Service调用参数(1单位时间) 发起Web Service调用((16单位时间)) 将结果渲染返回给用户(2单位时间)          那么SEDA会使用一条线程处理1.接收用户请求、3.准备WebService、5.返回结果,两条线程处理2.数据库查询, 而5条线程处理耗时最多的4.WebService请求。      结果表明,当远程调用所花时间不变,而本地操作得到优化时,系统通量也能获得明显提高。

3. Mule 中的SEDA 实例 Using SEDA to Ensure Service Availability(InfoQ)        Mule是SEDA架构的遵循者。每个Component间,用inbound->outBound的Queue异步相连,每个Component可以设置自己的线程池大小,队列长度。

因此SEDA中的Stag间事件驱动异步链接,Stag内Incoming Event Queue,Thread Pool,Event Handler都有了。

<mule-descriptor name="RadioCarUMO" implementation="radioCar">    <threading-profile maxThreadsActive="5" maxThreadsIdle="10" poolExhaustedAction="WAIT" threadWaitTimeout="-1" id="component" doThreading="true"/>    <queue-profile maxOutstandingMessages="6"/>    <inbound-router>        <endpoint address="RadioCarsQueue"/>        <router className="org.mulefair.routing.BennyTheGatekeeper"/>    </inbound-router>    <outbound-router>        <router className="org.mule.routing.outbound.OutboundPassThroughRouter">             <endpoint address="FairAreaQueue"/>        </router>    </outbound-router></mule-descriptor>  

而例子中的InboundRouter BennyTheGatekeeper,则实现了administration controller的角色,本来poolExhaustedAction="WAIT",而administration controller可以通过计数器,直接refuse需求,将请求转发到alarm queue。

整个Stag中唯一缺失是动态改变资源参数的Resource Controller,threadpool也不是Dynamically sized Thread Pool,但这似乎不重要了。

再一次觉得Mule充当Service Container比ESB时还要称职。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dankes/archive/2008/06/18/2563045.aspx

SEDA(Staged Event-Driven Architecture)相关推荐

  1. seda java,对SEDA(Staged Event Driven Architecture)的一个介绍. 不是很详细, 但是仍然能够提供一些信息...

    1.Overview SEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stag,不同资源消耗的Stag使用不同数量的线程来处理,Sta ...

  2. Staged Event Driven Architecture (SEDA) 介绍

    Staged Event Driven Architecture (SEDA) 介绍 作者:朱之光 http://larryzhu.bokee.com 一.前言 二.当前流行的两种并发处理编程模型 三 ...

  3. COMP SCI 3013 7089 - Event Driven Computing Semester java

    COMP SCI 3013作业代做.代写Java程序作业.代做 GUI/MapReaderWriter作业.代写Java编程作业 COMP SCI 3013 & 7089 - Event Dr ...

  4. Event Driven Class OSAL 基于事件驱动的模拟操作系统

    EventDrivenClassOSAL详解 Event Driven Class OSAL 基于事件驱动的模拟操作系统 ##前言 什么是OSAL OSAL为:Operating System Abs ...

  5. 转:解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述

    原文: 解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述 前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次 ...

  6. 模型驱动架构(MDA,Model Driven Architecture)浅述

    前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止. 在<应用 MDA >一书中,作者 ...

  7. 解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述

    这是应邀发表在<软件世界>2007年7月刊上的一个MDA介绍文章,入门者可以看看 :) ================================================== ...

  8. SEDA,一个不错的技术。

    最近在看MULE的时候,发现了一个不错的技术--SEDA,不过现在我还不知道如何能独立出来应用到我的系统中呢.下面转载一篇文章,给大家看看. http://larryzhu.bokee.com/677 ...

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

    基于SEDA的异步框架设计与实现 一.SEDA国内外研究现状 1.SEDA架构的起源和特点    当前最流行的互联网服务器模型基本都是基于多线程/进程并发服务模型.然而当线程数目增加到一定值后,系统性 ...

最新文章

  1. C#里partial关键字的作用(转摘)
  2. JSON解析---初识
  3. zookeeper客户端库curator分析
  4. 2008服务器系统配置dns,配置Win2008系统DNS服务器的具体步骤
  5. 跟着官方文档能学懂React Hooks就怪了
  6. dc/os_DC / OS中具有Java和数据库应用程序的服务发现
  7. c++ map 多线程同时更新值 崩溃_深入理解并发安全的 sync.Map
  8. android 相对布局_【学习】安卓212相对布局的练习含代码版
  9. python多线程有用吗_当CPU利用率已经接近100%时,多线程有帮助吗?
  10. matlab 解相位_光测力学栅线投影技术-相位求解方法
  11. TensorFlow中的优化算法
  12. 小众绿软|媒体:myPlayer 2.1
  13. excel--text(双坐标图表)
  14. java爬取网页上qq号,邮箱号等
  15. btrfs filesystem 增加容量
  16. Unity ShaderGraph图片发光效果
  17. Base64在线加密解密
  18. Python pandas 染色体 SNP 位点提取 并排序
  19. python中int函数的用法浅析_python中int函数怎么用,
  20. 数学之美:数学究竟是如何被运用到生活中的?

热门文章

  1. Prim算法的具体实现
  2. MessageSource简介
  3. JAVA基础——集合【源码剖析】
  4. Docker技术PPT分享给大家
  5. BGP协议详解(一)
  6. sqlplus 为什么会自动断开_为什么设置的手机铃声会自动变为手机默认的,原因在这里...
  7. Hi3516CV500/Hi3516AV300/Hi3516DV300 SDK编译
  8. mysql 增加字段
  9. 中山大学新华学院计算机,中山大学新华学院信息科学学院电子信息科学与技术、计算机科学与技术、软件...
  10. IDEA服务器端JQuery框架加载失败--已解决