服务器架构是支撑起项目的基础设施,今天要给大家讲解的是一个高并发架构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)有限队列

入队有可能失败,假如队列拒绝新项

阻塞会在满溢队列上实现吸纳压力

通过丢弃事件来降低负载

  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是什么?有什么特点?相关推荐

  1. 从简单到高并发服务器(一)

    一个单线程的回声服务器 (Echo Server) 我们从一个简单的服务器开始说起. 它可以接受一个客户的连接,接收消息,然后把这个消息发送回去,关闭连接--完工.我们用 Linux 和 iOS / ...

  2. 如何使用 Go 语言搭建企业级高并发服务器?

    每到节假日和过年,需要外出通行的人几乎都会遇到一个问题:抢火车票!当全国上亿人都在固定的时间段抢票,服务器动辄就要承受上百万级并发的情况时,你就会明白,一个支持高并发的服务器架构有多重要! 在后端程序 ...

  3. java设计高并发内存池_高并发服务器-连接池的设计

    高并发服务器-连接池的设计 高并发服务器需要有一些池的设计,如内存池,连接池,数据库连接池. 池(pool)的设计主要考虑到一些资源的频繁申请和释放,尤其是在高并发的服务器中,几万甚至几十万并发每秒, ...

  4. linux网络编程(二)高并发服务器

    linux网络编程(二)高并发服务器 错误处理 高并发服务器 多进程并发服务器 客户端 错误处理 #include "wrap.h"int Bind(int fd, const s ...

  5. 大型网站高并发——服务器负载均衡设计

    大型网站高并发--服务器负载均衡设计 方案一:直接路由方式(LVS-DR) 硬件配置:一台负载均衡器,两台或则三台TOMCAT服务器 WEB服务器配置:Linux + tomcat+ WEB应用程序( ...

  6. redis 缓存数据_Redis 缓存数据方案对比:常规 VS 高并发服务器

    1 Redis 是什么 Redis 是一种开源的非关系型数据库.起源于负载较大时,当前关系型数据库无法承载的情况. 到目前为止,Redis 可以用作数据库.缓存.消息处理.Redis 可以存储键和5种 ...

  7. Linux 高并发服务器开发

    该文章是通过观看牛客网的视频整理所得,以及在实践过程中遇到的问题及解决方案的整理总结. Linux 高并发服务器开发 linux 系统编程 linux 环境的搭建 环境搭建需要的软件 虚拟机中安装 u ...

  8. Linux高并发服务器开发---笔记2(多进程)

    0630 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 进程间 ...

  9. Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.1.1 项目介绍 4.1.2 开发环境搭建 ①安装Linux系统.XSHELL.XFTP.Visual Stu ...

最新文章

  1. 微信小程序之购物车功能
  2. Linux学习(十二)---RPM和YUM
  3. 【 Verilog HDL 】避免出现锁存器的组合电路描述方式
  4. 二,zabbix与php的一些问题
  5. 尽量使用const、enum、inline代替#define
  6. Java 洛谷 P1161 开灯
  7. 老股民经验之谈 这些股票买入必死无疑
  8. aspnet_regiis.exe -i 执行报错
  9. android usb弹窗权限r,Android USB权限对话框永远不会出现
  10. leetcode 3 --- 无重复字符的最长子串
  11. php原生的异步请求,原生JavaScript实现Ajax异步请求
  12. 前端世界起争端,你是现代 Web 技术体系的坚定捍卫者吗?
  13. Sketch 76 for mac(矢量绘图设计软件)
  14. hdu 4638 Group
  15. JavaScript的三种弹窗
  16. 基于51单片机的模拟信号检测系统
  17. 本体论:Gene Ontology (基因本体)
  18. 两台计算机直连怎么写ip,两台电脑直连(两台电脑用一条网线连接)
  19. 微信小程序万里目_微信小程序加盟千万别忘了几个基本要求
  20. Column ‘‘ in field list is a ambiguous

热门文章

  1. 为什么有人可以在屎一样混乱的几千行代码里加功能?不重构能驾驭屎山吗?...
  2. 新概念英语1册67课
  3. JSON Schema数据校验入门
  4. 水平集算法matlab实现
  5. 【爬虫】手把手教你写网络爬虫(2)
  6. 中国邮政java面试_中国邮政C笔试题
  7. Spring源码:Spring源码阅读环境搭建
  8. 高通SDX12:小网SIM卡QMI拨号无法获取IPv6地址问题的分析
  9. 突发!Google 下架拼多多,称存在恶意软件
  10. 团购网站集体转型谋生