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

  • 相关阅读:
    mycat 查询sql 报错
    mysql 主从 binlog
    数据库分库分表思路
    JavaScript数组知识
    JS判断当前页面是在 QQ客户端/微信客户端/iOS浏览器/Android浏览器/PC客户端
    js汉字转换为拼音
    工作中常用到的JS验证
    自动部署服务器代码
    php Excel 导入
    PHP 模拟http 请求
  • 原文地址:https://www.cnblogs.com/lay2017/p/10348413.html
Copyright © 2020-2023  润新知