高并发服务器构架SEDA是什么?有什么特点?

TheDisguiser 2020-05-08 17:23:35 java常见问答 5533

服务器架构是支撑起项目的基础设施,今天要给大家讲解的是一个高并发架构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工具网了解详情吧。

推荐阅读:

高并发和多线程的区别在哪里?都有什么概念?

高并发java实现方式有哪些?该怎么实现

高并发开发原理是什么?如何理解?