当前位置:  开发笔记 > 编程语言 > 正文

什么是SEDA(分阶段事件驱动架构)?

如何解决《什么是SEDA(分阶段事件驱动架构)?》经验,为你挑选了2个好方法。

SEDA:用于良好可扩展的互联网服务的架构

"SEDA为的缩写阶段式服务器模型,并分解一个复杂的,事件驱动的应用程序为一组的阶段由连接队列 ".

我知道这是一个架构,并且SEDA有很多实现(参见维基百科文章).什么是"舞台"?有人可以提供有关分阶段事件驱动架构的全面高级摘要,以及它与传统(未分级?)事件驱动架构的区别吗?



1> 小智..:

舞台类似于"事件".为了简化这个想法,将SEDA视为在它们之间发送消息的一系列事件.

我认为,使用这种架构的一个原因是,您可以对逻辑进行分段并将其连接并解耦每个事件,主要用于具有低延迟要求的高性能服务.

如果使用Java TPE,则可以监视每个阶段的运行状况,吞吐量,错误,延迟,并快速找到性能瓶颈的位置.并且作为一个很好的副作用,使用较小的代码片段,您可以轻松地测试它们并增加代码覆盖率(这是我的情况).

为了记录,这是Cassandra(NoSQL)和Mule ESB(AFAIK)的内部架构.

我建议阅读原始论文(抱歉,重复链接):

https://github.com/mdwelsh/mdwelsh.github.io/blob/master/papers/seda-sosp01.pdf

这是我为SEDA for Java EE建模的框架:http: //code.google.com/p/seide/


现在已经打破了哈佛大学论文的链接.有人有副本吗?

2> 小智..:

线程架构与现实生活中的分阶段事件驱动架构:

想象一下,你有一家餐馆.现在,它将如何运作?

"线程架构":

    客户到达

    服务员(a)去找他/她

    服务员(a)将他/她带到一张可用的桌子

    服务员(a)接受订单

    服务员(a)做饭

    服务员(a)接受订购

    服务员(a)等到客户完成他/她的餐费

    服务员(a)走出客户端

在这种情况下,服务员在整个过程中与客户一起.如果服务器有10个线程,可以同时处理10个连接.

与SEDA:

    客户到达

    服务员(a)去找他/她

    服务员(a)将他/她带到一张可用的桌子(然后回来给另一位客户来)

    服务员(b)接受订单(大量I/O,需要时间)

    库克做饭

    服务员(c)接受订购

    服务员(d)等到客户完成他/她的用餐付款

    服务员(e)走出客户

在这种情况下,有不同类型的参与者在做这些活动.这有助于在活动中重复使用参与者,花费更少的时间并且结果更有效.事实上,这就是餐馆的工作方式(可能更多的服务员是同一个人,但厨师绝对不是).

这是一个极端的例子,当然对于线程服务器,可以完成一些异步任务.这只是一个理论上的例子.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有