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做链路跟踪的日志表

  • 相关阅读:
    element表单中一个elformitem下多个formitem项校验(循环校验)
    vscode配置
    git push时提示错误 sign_and_send_pubkey: no mutual signature supported
    syncthing文件同步网盘配置
    MQTT服务搭建和简单使用
    python脚本避免被多次执行
    Hadoop集群对datanode宕机后的处理机制源码阅读
    工作冲突和低谷
    职场的帮助
    测试总体思想
  • 原文地址:https://www.cnblogs.com/lay2017/p/10348413.html
Copyright © 2011-2022 走看看