文档章节

SEAD架构介绍

满小茂
 满小茂
发布于 2016/04/15 10:23
字数 929
阅读 160
收藏 4

由于这个架构没怎么学习,只是简单做一下记录,据说 Cassandra就是用架构实现的

一、传统并发模型的缺点

基于线程的并发

特点:
每任务一线程
直线式的编程
使用资源昂高,
context切换代价高,竞争锁昂贵
太多线程可能导致吞吐量下降,响应时间暴涨。

 

基于事件的并发模型

特点:
单线程处理事件
每个并发流实现为一个有限状态机
应用直接控制并发
负载增加的时候,吞吐量饱和
响应时间线性增长
 

二、SEDA架构

特点:
(1)服务通过queue分解成stage:
   每个stage代表FSM的一个状态集合
   Queue引入了控制边界
(2)使用线程池驱动stage的运行:
   将事件处理同线程的创建和调度分离
   Stage可以顺序或者并行执行
   Stage可能在内部阻塞,给阻塞的stage分配较少的线程

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主要还是为了解决传统并发模型的缺点,通过将服务器的处理划分各个Stage,利用queue连接起来形成一个pipeline的处理链,并且在Stage中利用控制器进行资源的调控。资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制,而stage的划分也简化了编程,并且通过queue和每个stage的线程池来分担高并发请求并保持吞吐量和响应时间的平衡。简单来说,我看中的是服务器模型的清晰划分以及反应控制。

 总结:

        这种架构最典型的实现方法就是通过消息队列中间件解耦,然后根据不同的业务,将不同业务消息发送到不同MQ中,然后在MQlistener中将消息放到线程池,编写对应的业务处理代码。这些业务代码在线程池中执行,可以大幅度提高并发性。

示意图

  

本文转载自:http://www.blogjava.net/killme2008/archive/2010/06/20/324022.html

共有 人打赏支持
满小茂
粉丝 75
博文 120
码字总数 134867
作品 0
成都
程序员
私信 提问
MIPS技术公司官方对linux的支持信息

Linux MIPS Technologies actively supports, develops and improves the Linux kernel for the MIPS® architecture, in particular MIPS Technologies cores, the MIPS32®, microMIPS™ ......

RyaneLuo
2012/07/30
0
0
Apache Shiro 使用手册

很好的学习资源,谢谢kdboy博主! Apache Shiro 使用手册(一)Shiro架构介绍 http://kdboy.iteye.com/blog/1154644 Apache Shiro 使用手册(二)Shiro架构介绍 http://kdboy.iteye.com/blo...

dmrs
2015/10/18
8
0
MySQL主从复制与高可用架构方案与项目环境准备_MySQL高可用复制与分布式集群架构01

MySQL高可用复制与分布式集群架构之01:MySQL主从复制与高可用架构方案与项目环境准备 视频教程学习地址 http://edu.51cto.com/course/14238.html 数据库学习专用QQ群:336282998、189070296...

风哥Oracle
08/25
0
0
民工哥公众号linux系统学习线路图大全

民工哥公众号linux系统学习线路图大全 <-----------点击链接进入 友侃有笑公众号Linux学习路线图 1、基础篇 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux文件...

民工哥
2017/08/30
0
0
新书《高性能网站架构实战》前言 (部分)

我的系统运维观 我做系统运维工作也好几年了,基本上应付过各种各样的运维环境和工具。从最开始简单的各种应用部署,比如常用的LVS、HAproxy这样的负载应用、Apache、Nginx这类的Web应用,到...

单身贵族liu
2012/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

混合模型---logistic模型的混合

专家混合

中国龙-扬科
8分钟前
1
0
自定义参数校验注解 (实现ConstraintValidator方法)

Hibernate Validator常用注解(图网上找的) 2.自定义校验器 a.注解类 @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})@Retention(RUNTIME)@Documented@Constraint(validatedB......

INSISTQIAO
12分钟前
1
0
Integer 实现

Integer 封装类型,参数传递传的是值,不是引用 内带缓存,-128 到127 -128 到127 直接数值 IntegerCache 如果不在这个范围,才会new Integer () public static Integer valueOf(int ...

Java搬砖工程师
12分钟前
1
0
数字IT基础-数据采集总线

数字化运营基础 在如今“双十一”不再是线上活动的代名词,而逐步变为一场线上线下同时进行的消费者盛宴。销售、运营、物流、生产商等都在开足马力在各大渠道备战,据统计: 消费者在期间被平...

阿里云官方博客
20分钟前
0
0
三次握手四次挥手

背景 和女朋友异地恋,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题: 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,...

瑞查德-Jack
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部