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

基于SEDA的异步框架设计与实现编程

 

 

 

2、为何使用SEDA服务器

 

       目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型。可是这两个模型都不足以解决这个问题。咱们来首先看一下这两种编程模型。网络

 

一、多线程并发模型   多线程

       多线程并发模型是目前最广泛的服务器编程模型,该模型的架构以下图所示

        该模型针对每个请求,会为其建立并分配一个线程。该线程负责这个请求的处理。该模型的优势:执行粒度是整个完整的处理流程。处理逻辑清晰,容易开发。但与此同时缺点也很明显:若是处理过程当中某一步骤出现长时间调用(例如网络通讯、I/O磁盘读写等),则会阻塞后续的请求,形成资源的浪费。而且,当随着处理请求不断增长,致使并发执行的线程数量太多。过多的线程数量致使系统在线程调度和资源争用上的开销过大。引发系统性能急剧降低。致使系统处理能力降低。
架构

 

二、事件驱动模型   并发

       同时,咱们也能看到,不少系统也倾向于使用事件驱动模型,该模型的模型图以下图所示:

        该模型的思想为:将处理流程分割成多个步骤,每个步骤都实现为一个有限状态机(FSM),全部的处理请求会做为事件进入系统,由调度器负责传递给相应的状态机,状态机的处理结果也以事件的形式传给调度器,新的事件将再次被调度器转发给下一个状态机进行处理,直至处理完成。该模型的优势在于,因为将各个处理步骤独立实现,能够很容易的进行系统监测和调整。可是其缺点也不容忽视,即:因为Scheduler的设计和实现过于复杂,针对于不一样的应用和系统的逻辑变动须要不一样的实现,致使采用这一模型构建出的系统将十分庞大和难以控制。
       综上所述,主流的多线程编程模型以及事件驱动编程模型虽然都各有其优点,但同时也都有其不可避免的缺陷,并不适合在高并发的环境下进行成熟系统的开发。因此这就是为何咱们要选择其余的模式来进行系统开发。如下介绍SEDA架构思想。

框架

三、阶段性事件驱动(SEDA)模型   异步

       针对上述现有主流并发架构之缺陷,若可以实现一种良好支持高并发,而且可以对性能需求自适应的架构,则将在很大程度上优化和提高服务器性能,既可以提升运行速度,又能够减小服务器压力,实现了公司利益与用户体验的共赢。所以,为汲取多线程与事件驱动模型之优势,最大程度规避这二者之缺点,以实现较好的高并发服务器架构,SEDA便应运而生。
       SEDA(Staged Event Driven Architecture)是一种阶段性事件驱动的服务器应用程序架构。它是Matt Welsh博士于加州大学伯克利分校提出的一个高性能应用服务器模型。SEDA架构整合了多线程的服务器模型和事件驱动的服务器模型的优点,它能够高效地管理和控制服务器资源,良好地适应高并发环境,SEDA被设计成一个可伸缩的高可用服务器架构。 
应用服务器之请求处理步骤一般是复杂的、基于事件驱动处理的有穷状态机(FSM),因此实现服务器程序过程就相似用程序实现有穷状态机过程。下图所示的便是一基于SEDA模型http服务器有穷机状态图:


        SEDA架构能对有穷状态机进行分析,尔后将相关状态汇集在同一Stage中,Stage间采用队列的方式来进行通讯。每个Stage皆彻底独立,均拥有本身的线程池,以及为了专门处理到达这一步骤所必须进行的工做。全部的Stage均经过自身事件队列链接在一块儿,构成完整的请求处理网络。性能控制器和动态线程池依请求的繁忙程度动态来调整线程池的大小,以达到系统资源的最有分配。每个Stage由下述四部分组成:
       (1)    事件队列:用以维持Stage间之通讯。
       (2)    事件处理器:用以执行请求到这一个Stage中所应执行的工做。
       (3)    线程池:用以提供事件处理器且能够并发执行事件处理之环境。
       (4)    性能控制器:用以对该Stage资源(线程数、队列长度等等)进行调整。
       经过这四部分的协做配合,每个Stage均可以很好地运行,而且能够控制资源的使用。已通过Stage处理完,若没有后续工做,便可以回收线程池中的线程,来供给其余Stage使用。Stage结构以下图所示。
       在SEDA架构中,基本的处理单元称为阶段(Stage),一个阶段由事件队列、动态线程池、事件处理器和一个性能控制器四个组件构成。SEDA将一个请求的处理过程分解为一系列的阶段,阶段之间经过事件队列联系,开发人员只负责每一个阶段的服务逻辑以及阶段间的链接逻辑,而由各个阶段自身负责资源管理以及负载适应功能。使用这种解耦拆分可使系统达到高并发性、对负载变化的良好适应性以及高度的可缩放性。

高并发

相关文章
相关标签/搜索