高并发服务器构架SEDA是什么?有什么特点?
服务器架构是支撑起项目的基础设施,今天要给大家讲解的是一个高并发架构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会吸纳过量的负载,有限的线程池维持并发。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!
2)Stage控制器
负责资源的分配和调度
控制派发给Event Handler的事件的顺序及数量。
Event Handler可能在内部丢弃、过滤、重排序事件。
2.应用=Stage网络
1)有限队列
入队有可能失败,假如队列拒绝新项
阻塞会在满溢队列上实现吸纳压力
通过丢弃事件来降低负载
- 队列将Stage的执行分解
引入了显式的控制边界
提供了隔离、模块化、独立的负载管理
3)方便调试和profile
事件的投递可显
时间流可跟踪
通过监测queue的长度发现系统瓶颈
3.动态资源控制器
1)、线程池管理器
目标: 决定Stage合理的并发程度
操作:观察queue长度,如果超过阀值就添加线程
移除空闲线程
2)、批量管理器
目的:低响应时间和高吞吐量的调度
操作:
Batching因子:Stage一次处理的消息数量
小的batching因子:低响应时间
大的batching因子:高吞吐量
尝试找到具有稳定吞吐量的最小的batching因子。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!
观察stage的事件流出率
当吞吐量高的时候降低batching因子,低的时候增加
总结:
SEDA的主要作用就是为解决传统并发模型的缺点,一般使用者相中的就是它的清晰划分及反应控制。
高并发服务器构架SEDA是什么?有什么特点?相关推荐
- 从简单到高并发服务器(一)
一个单线程的回声服务器 (Echo Server) 我们从一个简单的服务器开始说起. 它可以接受一个客户的连接,接收消息,然后把这个消息发送回去,关闭连接--完工.我们用 Linux 和 iOS / ...
- 如何使用 Go 语言搭建企业级高并发服务器?
每到节假日和过年,需要外出通行的人几乎都会遇到一个问题:抢火车票!当全国上亿人都在固定的时间段抢票,服务器动辄就要承受上百万级并发的情况时,你就会明白,一个支持高并发的服务器架构有多重要! 在后端程序 ...
- java设计高并发内存池_高并发服务器-连接池的设计
高并发服务器-连接池的设计 高并发服务器需要有一些池的设计,如内存池,连接池,数据库连接池. 池(pool)的设计主要考虑到一些资源的频繁申请和释放,尤其是在高并发的服务器中,几万甚至几十万并发每秒, ...
- linux网络编程(二)高并发服务器
linux网络编程(二)高并发服务器 错误处理 高并发服务器 多进程并发服务器 客户端 错误处理 #include "wrap.h"int Bind(int fd, const s ...
- 大型网站高并发——服务器负载均衡设计
大型网站高并发--服务器负载均衡设计 方案一:直接路由方式(LVS-DR) 硬件配置:一台负载均衡器,两台或则三台TOMCAT服务器 WEB服务器配置:Linux + tomcat+ WEB应用程序( ...
- redis 缓存数据_Redis 缓存数据方案对比:常规 VS 高并发服务器
1 Redis 是什么 Redis 是一种开源的非关系型数据库.起源于负载较大时,当前关系型数据库无法承载的情况. 到目前为止,Redis 可以用作数据库.缓存.消息处理.Redis 可以存储键和5种 ...
- Linux 高并发服务器开发
该文章是通过观看牛客网的视频整理所得,以及在实践过程中遇到的问题及解决方案的整理总结. Linux 高并发服务器开发 linux 系统编程 linux 环境的搭建 环境搭建需要的软件 虚拟机中安装 u ...
- Linux高并发服务器开发---笔记2(多进程)
0630 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 进程间 ...
- Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)
0613 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.1.1 项目介绍 4.1.2 开发环境搭建 ①安装Linux系统.XSHELL.XFTP.Visual Stu ...
最新文章
- 微信小程序之购物车功能
- Linux学习(十二)---RPM和YUM
- 【 Verilog HDL 】避免出现锁存器的组合电路描述方式
- 二,zabbix与php的一些问题
- 尽量使用const、enum、inline代替#define
- Java 洛谷 P1161 开灯
- 老股民经验之谈 这些股票买入必死无疑
- aspnet_regiis.exe -i 执行报错
- android usb弹窗权限r,Android USB权限对话框永远不会出现
- leetcode 3 --- 无重复字符的最长子串
- php原生的异步请求,原生JavaScript实现Ajax异步请求
- 前端世界起争端,你是现代 Web 技术体系的坚定捍卫者吗?
- Sketch 76 for mac(矢量绘图设计软件)
- hdu 4638 Group
- JavaScript的三种弹窗
- 基于51单片机的模拟信号检测系统
- 本体论:Gene Ontology (基因本体)
- 两台计算机直连怎么写ip,两台电脑直连(两台电脑用一条网线连接)
- 微信小程序万里目_微信小程序加盟千万别忘了几个基本要求
- Column ‘‘ in field list is a ambiguous