zoukankan      html  css  js  c++  java
  • SEDA架构实现

    一、SEDA

    SEDA全称是:stage event driver architecture,中文直译为“分阶段的事件驱动架构”,它旨在结合事件驱动和多线程模式两者的优点,从而做到易扩展,解耦合,高并发。

    各个stage之间的通信由event来传递,event的处理由stage的线程池异步处理。

    上图对SEDA做了一点改动,如图所示,每个stage由几个核心部分组成:

    1)阶段控制器:StageController

    2)  事件队列:eventQueue

    3)  事件监听器

    4)事件处理线程池(线程池内部维护一个队列)

    5)事件处理器(事件处理器图上没显示,作为一个业务线程来实现)

    处理流程如下:

    1)event推送到stage的eventQueue

    2)  EventListener监听到了event

    3)ThreadPool异步并发处理event

    二、UML类图

    依据上图的逻辑,下面是UML类图设计

    1)  StageManager初始化调用boot(),创建Stage并维护Event和Stage之间的映射关系

    2)Stage启动监听器,监听事件队列(事件队列可以是本地,也可以是分布式队列,这里采用一个Builder构造器了来实现,你可以在构造器里面实现自己的策略)

    3)如果接收到事件,将提交给执行器去执行(这里涉及到事件处理器,包含业务逻辑)

    三、PDM

    下面设计了两张表:

    1)t_stage_event:针对每个Stage的事件进行持久化,防止事件丢失补偿处理

    2)t_stage_event_log: 对一个event做链路跟踪的日志表

  • 相关阅读:
    8.3.ZooKeeper集群安装配置
    Shiro Demo 示例(SpringMVC-Mybatis-Shiro-redis)
    Shiro 学习
    JavaWeb项目:Shiro实现简单的权限控制(整合SSM)
    权限管理——权限模型和权限控制
    Java程序员面试题集(151-180)
    Java面试题集(136-150)
    Java面试题集(131-135)
    Java面试题集(116-135)
    Java面试题集(1-50)
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11284123.html
Copyright © 2011-2022 走看看