8个常用于可扩展系统的设计模式
2011-03-14 10:27
316 查看
1,负载均衡 – 把一个请求按一定hash算法或规则分配到服务器组中的一台去处理,以分担单个服务器的压力。这一般多见于大型网站的构架。
2,分头收集(Scatter and Gather) – 把一个请求分解成好几个服务请求分发到多个server上,每个server处理后返回的结果会被合并成一个返回结果给请求端。 常见于搜索引擎如google,百度,搜狗,对一个关键词的搜索结果是由多台server处理并合并成一个搜索结果页。
3,结果缓存 – 服务器缓存某个请求的结果,下次对同样的请求只返回缓存的结果就ok了,而避免下次同样的请求进来时去做重复的计算。Memcached就是做这个用的。
4,空间共享 – 分布式计算常用的模式,所有的数据、对象都放在一个共享虚拟空间,所有的计算进程共享并控制这些数据。
5,管道过滤 – 所有的请求都先进入某个管道,然后以先进先出的方式接受处理和返回结果。有点似曾经写的投票,推荐这样的应用时的处理方式。
6,MapReduce – 在处理批量任务时,如果磁盘I / O是主要瓶颈,则一般采取这种模式。它的使用分布式的文件系统,从而使多个I/O操作能够并行。这种模式在谷歌的内部应用程序中使用的较多,开源的Hadoop就是个典型案例
7,批量同步并行 – 该模式下的所有任务是基于锁步执行,由Master来协调。每个任务重复以下步骤,直到再没有活跃的任务。
每个任务从输入队列中读取数据
每个任务根据自己读取到的数据进行处理
每个任务将自己的处理结果直接返回
8,Execution Orchestrator - 该模型是基于一个智能调度的任务分配,还没太弄明白。
2,分头收集(Scatter and Gather) – 把一个请求分解成好几个服务请求分发到多个server上,每个server处理后返回的结果会被合并成一个返回结果给请求端。 常见于搜索引擎如google,百度,搜狗,对一个关键词的搜索结果是由多台server处理并合并成一个搜索结果页。
3,结果缓存 – 服务器缓存某个请求的结果,下次对同样的请求只返回缓存的结果就ok了,而避免下次同样的请求进来时去做重复的计算。Memcached就是做这个用的。
4,空间共享 – 分布式计算常用的模式,所有的数据、对象都放在一个共享虚拟空间,所有的计算进程共享并控制这些数据。
5,管道过滤 – 所有的请求都先进入某个管道,然后以先进先出的方式接受处理和返回结果。有点似曾经写的投票,推荐这样的应用时的处理方式。
6,MapReduce – 在处理批量任务时,如果磁盘I / O是主要瓶颈,则一般采取这种模式。它的使用分布式的文件系统,从而使多个I/O操作能够并行。这种模式在谷歌的内部应用程序中使用的较多,开源的Hadoop就是个典型案例
7,批量同步并行 – 该模式下的所有任务是基于锁步执行,由Master来协调。每个任务重复以下步骤,直到再没有活跃的任务。
每个任务从输入队列中读取数据
每个任务根据自己读取到的数据进行处理
每个任务将自己的处理结果直接返回
8,Execution Orchestrator - 该模型是基于一个智能调度的任务分配,还没太弄明白。
相关文章推荐
- 8个常用于可扩展系统的设计模式(转载)
- 在系统可扩展性方面常用的8个设计模式
- 常用设计模式详解,附设计系统思路图
- 《实时设计模式——实时系统的强壮的、可扩展的体系结构》
- 设计模式--常用8个设计模式
- 第551篇--设计模式系统-Proxy
- 用观察者模式设计一个交通信号灯调度系统
- 几种常用的设计模式
- 【附加题】《Java170道面试笔试题全面含答案》涉及java/数据库/框架/系统/设计模式相关
- 常用设计模式
- Linux系统调用(有没有觉得像是设计模式)
- B/S构架MVC系统设计模式
- 扩展系统功能——装饰模式(二):装饰模式概述
- 三高系统常用架构模式
- 扩展系统功能--装饰模式
- 设计模式——开发常用的设计模式梳理
- 常用的设计模式
- j2ee常用的设计模式
- 编程常用设计模式详解--(中篇)(适配器、装饰、代理、外观、桥接、组合、享元)
- 模式-工程化实现及扩展读书笔记——设计原则