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

  • 相关阅读:
    Java第三季
    LeetCode(10)Regular Expression Matching
    LeetCode(9)Palindrome Number
    shell基础编程
    LeetCode(8)String to Integer (atoi)
    使用python绘制词云
    我的书单
    LeetCode(7)Reverse Integer
    获取新浪微博的Access_token
    c语言中,常见数据类型的字节数
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11284123.html
Copyright © 2020-2023  润新知