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

  • 相关阅读:
    浏览器缓存机制
    es6笔记(6) Iterator 和 for...of循环
    es6笔记(3.1)三个点的“...”的作用
    es6笔记(5)Map数据结构
    es6笔记(4) Set数据结构
    SpringBoot事件监听
    SpringBoot入门
    五大常用算法之三贪心算法
    五种常用算法之二:动态规划算法
    五大常用算法之一:分治算法
  • 原文地址:https://www.cnblogs.com/lay2017/p/10348413.html
Copyright © 2011-2022 走看看