核心思想
阶段组成
负载控制
1. 核心思想
将应用系统按照业务逻辑划分为一系列相关阶段,对于消耗不同资源的每个阶段使用不同数量的线程池来处理。每个阶段都是独立的模块,分别完成一个独立的逻辑功能单元。阶段之间用事件队列连接起来,所有阶段组成完整的工作流。
2. 阶段组成
- 事件和事件队列
- 线程池
- 事件处理器
- 调度控制器
- 中央调度器(阶段外部,与各阶段调度控制器收集反馈信息)
事件和事件队列
该阶段接收处理的请求,表现为一次事件。
事件队列是事件的集合,有队列大小和当前等待事件个数等属性。
事件处理器
各阶段核心模块,继承自统一接口。并实现业务逻辑处理。
线程池
以多线程的机制 并发 驱动 事件处理器的执行。
池的大小由本阶段的调度控制器设置。
各阶段线程池独立。
调度控制器
负责系统运行过程中,保存本阶段的负载情况(可用线程数 | 等待事件队列大小)。
负载情况由中央调度控制器统一收集。
根据中央调度控制器反馈情况设置本阶段线程池大小和事件队列长度。
中央调度控制器
系统运行过程中,收集各阶段负载情况,集中计算,反馈给各阶段调度控制器。
3. 负载控制–均值方差分析
阶段资源情况
各阶段线程池大小 t:
各阶段可用线程数 s:正数为空闲线程数 负数为等待事件数
各阶段所占系统资源系数 P:约定第一阶段P.1=1,P.2=t.2/t.1,P.3=t.3/t.1
各阶段资源总和 R: R = s.1*P.1+s.2*P.2+....
R 越大系统资源越充足
各阶段是否均衡
负载均值u 负载方差v
u=R/n
各阶段线程池大小调整
参考资料
基于SEDA企业服务总线负载控制--马存,马跃,廉东本,李文博