[服务器开发]可伸缩系统的设计模式(译)

简介:

Scalable System Design Patterns

可伸缩系统的设计模式

Ricky Ho在他的博客中分享了该文章,该文章是一个简单的概括分享,详细的可以参见他博客的其它详细文章。下面主要是意译。

1Load Balancer:负载均衡由分发者来决定哪个工作者处理下一个请求,这种决定可以基于不同的策略。

“In this model, there is a dispatcher that determines which worker instance will handle the request based on different policies. The application should best be "stateless" so any worker instance can handle the request.

This pattern is deployed in almost every medium to large web site setup.”

该模式中,由分发器来决定哪个工作者来处理请求。应用最好是无状态的,以使任何一个工作者都能同等处理请求。几乎所有的中大型网站都应用了负载均衡器这个模式。

clip_image002[4]

2Scatter and Gather:分散和聚合分发者将请求广播到处理池当中的所有工作者。每一个工作者单独计算其中一部分并将结果返回给分发者,由分发者来汇总所有的计算结果并返回。

”In this model, the dispatcher multicast the request to all workers of the pool. Each worker will compute a local result and send it back to the dispatcher, who will consolidate them into a single response and then send back to the client.

This pattern is used in Search engines like Yahoo, Google to handle user's keyword search request ... etc.“

该模式中,分发者将请求转发给池中的所有工作者,每个工作者处理请求的一部分并返回给分发器,分发器工作者返回的结果加工组合为一个响应返回给客户端。该模式在搜索引擎中使用处理用户的关键字,如YahooGoogle

clip_image004[4]

3Result Cache:结果缓存分发者会首先检查这个请求之前是否有处理过,并试图找出之前的处理结果并返回,以便节省处理时间。

“In this model, the dispatcher will first lookup if the request has been made before and try to find the previous result to return, in order to save the actual execution.

This pattern is commonly used in large enterprise application. Memcached is a very commonly deployed cache server.”

该模式,只是在分发器处理时加了一步查询结果缓存(译注:类似浏览器缓存),如果之前已经处理过并且可以使用之前的缓存,就返回之前的处理结果节省处理时间!该模式通常使用在大型企业应用。Memcached就是一个常用的cache服务器。

clip_image006[4]

4Shared Space:共享空间所有的工作者都关注一块共享区域内的信息,并且都向这块区域提交自己的部分知识、信息。信息不断被完善,直到问题可以被解决为止。

“This model also known as "Blackboard"; all workers monitors information from the shared space and contributes partial knowledge back to the blackboard. The information is continuously enriched until a solution is reached.

This pattern is used in JavaSpace and also commercial product GigaSpace.”

这个模式也叫黑板模式。就是在处理流程中,存在一个全局传递的对象,它可能包含了请求参数、中间状态、响应结果等各种信息,供流程中的各个组件对其进行操作。该模式在JavaSpace(译注:JavaSpaces技术是进行分布式计算的一种简单机制)和GigaSpace(译注:是一个虚拟化的中间件层)中都有使用。

clip_image008[4]

5Pipe and Filter:管道和过滤器所有的工作者按照数据处理的流程被串行连接起来。

“This model is also known as "Data Flow Programming"; all workers connected by pipes where data is flow across.

This pattern is a very common EAI pattern.”

这个模式也叫面向数据流编程,是很通用的企业集成模式。

clip_image010[4]

6Map Reduce:专门用于磁盘IO为瓶颈的批处理作业。使用分布式的文件系统使得文件能够被并行处理。

“The model is targeting batch jobs where disk I/O is the major bottleneck. It use a distributed file system so that disk I/O can be done in parallel.

This pattern is used in many of Google's internal application, as well as implemented in open source Hadoop parallel processing framework. I also find this pattern can be used in many many application design scenarios.”

这个模式使用分布式文件系统,这样磁盘可以并行I/OGoogle内部许多应用程序使用了这个模式。Hadoop就是基于MapReduce的一个实现。

clip_image012[4]

7Bulk Synchronous Parellel:批量同步并行所有工作者一个接一个的执行,由主控来进行协调。

“This model is based on lock-step execution across all workers, coordinated by a master. Each worker repeat the following steps until the exit condition is reached, when there is no more active workers.

1) Each worker read data from input queue

2) Each worker perform local processing based on the read data

3) Each worker push local result along its direct connection

This pattern has been used in Google's Pregel graph processing model as well as the Apache Hama project.”

该模型基于一个master协调,所有的worker同步(lock-step)执行。

该模式被用于Google Pregel Graph Processing google-pregel-graph-processingHama

clip_image014[4]

8Execution Orchestrator:执行集中管理一个智能的调度者在一群简单的工作者上调配已经准备好运行的任务(基于依赖图)

“This model is based on an intelligent scheduler / orchestrator to schedule ready-to-run tasks (based on a dependency graph) across a clusters of dumb workers.

This pattern is used in Microsoft's Dryad project

该模式基于一个智能调度者/管理者在一群工作者之间调配可运行任务。该模式在微软的:Microsoft’s Dryad project中使用。

clip_image016[4]




本文转自吴秦博客园博客,原文链接:http://www.cnblogs.com/skynet/archive/2012/12/04/2801656.html,如需转载请自行联系原作者


相关文章
|
12天前
|
监控 安全 Unix
服务器系统
服务器系统
27 7
|
24天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
6天前
|
网络协议 Windows
[收藏]优化基于Win 2000系统的Web服务器性能
[收藏]优化基于Win 2000系统的Web服务器性能
|
2月前
|
Ubuntu Linux 数据中心
阿里云服务器纯净版系统及系统版本参考与相关使用说明
在我们选购阿里云服务器的时候,操作系统有公共镜像、自定义镜像、共享镜像、云市场镜像、社区镜像可选,其中公共镜像为纯净版系统,这些系统皆已正版授权,旨在为ECS实例上的应用程序提供安全、稳定的运行环境。本文为大家汇总了阿里云服务器纯净版系统及最新的系统版本以及相关使用说明,以供大家了解和选择。
阿里云服务器纯净版系统及系统版本参考与相关使用说明
|
2月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
41 5
|
2月前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
61 1
|
2月前
|
Ubuntu 网络协议
怎么在Ubuntu系统云服务器搭建自己的幻兽帕鲁服务器?幻兽帕鲁搭建教程
《幻兽帕鲁》是热门开放世界生存游戏,玩家收集并利用“帕鲁”进行多样活动。为享受多人模式,需自建服务器:选云主机(推荐4C/16G/5M起)、装Steamcmd及游戏环境。登录Steam购游戏后,输入服务器地址即可联机畅玩。
104 1
怎么在Ubuntu系统云服务器搭建自己的幻兽帕鲁服务器?幻兽帕鲁搭建教程
|
2月前
|
存储 内存技术
【RAID磁盘阵列服务器数据恢复】华为OceanStor Dorado存储系统RAID-TP数据丢失数据恢复案例
客户报告其华为OceanStor Dorado存储系统的RAID-TP出现故障,导致数据丢失。RAID-TP是一种增强型RAID级别,包含数据磁盘、校验磁盘和转换磁盘,可在两个磁盘故障时仍保护数据。通过分析RAID结构与工作原理,我们制定了恢复方案:首先从校验磁盘读取信息并计算出丢失的数据块,接着将恢复的数据写入新磁盘。由于缺乏现成工具,需定制RAID重组程序以恢复数据。华为的动态RAID重构技术保证了重构过程中冗余级别的稳定。
34 1
|
2月前
|
弹性计算 Windows
震惊!ECS Windows 系统磁盘竟“撒谎”,空间去哪儿了?别急,这里有终极破解法!
【8月更文挑战第15天】在使用ECS Windows系统时,可能会遇到磁盘显示占用的空间远超实际文件大小的情况,导致空间不足。原因包括系统还原点、卷影副本累积及回收站文件未彻底删除等。解决方法有:清除系统还原点(`vssadmin delete shadows /all`),清空回收站,删除临时文件夹中的文件,以及检查并修复磁盘错误。这些步骤能有效释放空间,保证系统稳定运行。
47 4
|
2月前
|
监控 Linux Shell
"揭秘!一键掌控Linux服务器健康的秘密武器——超实用系统检查脚本,让你的服务器稳如老狗,告别宕机烦恼!"
【8月更文挑战第14天】服务器宕机或资源耗尽会严重影响业务。为此,你需要一个Linux系统检查脚本来守护服务器健康。它可以自动检测潜在问题如磁盘满载、内存泄漏等,避免服务中断。脚本应包括磁盘空间、内存/CPU使用、系统时间准确性、关键服务状态及系统日志分析等检查项。通过编写并定期运行这样的脚本,可以显著提高服务器的稳定性和可靠性。
36 1
下一篇
无影云桌面