服务器架构是支撑起项目的基础设施,今天要给大家讲解的是一个高并发架构SEDA,你们知道它是什么架构吗?它是没有传统架构的各种缺点的,跟小编一起来了解一下吧。
SEDA是什么?
一个高并发服务器架构,它的核心思想是把一个请求处理过程分成几个Stage,架构中不同资源消耗的Stage使用不同数量的线程来处理,Stage间使用事件驱动的异步通信模式。
SEDA特点是什么?
1)服务会通过queue分解成stage:
SEDA中每个stage代表FSM的一个状态集合
Queue引入控制边界
2)可以使用线程池驱动stage运行:
将事件处理同线程的创建和调度分离
Stage可以顺序或者并行执行
Stage可能在内部阻塞,给阻塞的stage分配较少的线程
SEDA主要应用有哪些?
1.Stage
1)应用逻辑封装到Event Handler
它接收到许多事件,然后处理这些事件,再派发事件加入其他Stage的queue
它对queue和threads并没有直接的控制
Event queue会吸纳过量的负载,有限的线程池维持并发
2)Stage控制器
负责资源的分配和调度
控制派发给Event Handler的事件的顺序及数量。
Event Handler可能在内部丢弃、过滤、重排序事件。
2.应用=Stage网络
1)有限队列
入队有可能失败,假如队列拒绝新项
阻塞会在满溢队列上实现吸纳压力
通过丢弃事件来降低负载
2) 队列将Stage的执行分解
引入了显式的控制边界
提供了隔离、模块化、独立的负载管理
3)方便调试和profile
事件的投递可显
时间流可跟踪
通过监测queue的长度发现系统瓶颈
3.动态资源控制器
1)、线程池管理器
目标: 决定Stage合理的并发程度
操作:观察queue长度,如果超过阀值就添加线程
移除空闲线程
2)、批量管理器
目的:低响应时间和高吞吐量的调度
操作:
Batching因子:Stage一次处理的消息数量
小的batching因子:低响应时间
大的batching因子:高吞吐量
尝试找到具有稳定吞吐量的最小的batching因子
观察stage的事件流出率
当吞吐量高的时候降低batching因子,低的时候增加
总结:
SEDA的主要作用就是为解决传统并发模型的缺点,一般使用者相中的就是它的清晰划分及反应控制。
以上就是本文的所有内容了,有关java常见问答更多内容请关注奇Q工具网了解详情吧。
推荐阅读: