可伸缩系统的设计模式(译)

简介:

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]

【原文】Scalable System Design Patterns

作者:吴秦
出处:http://www.cnblogs.com/skynet/

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1229797如需转载请自行联系原作者


yaocoder

相关文章
|
4月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
7月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
94 5
|
8月前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
84 0
|
10月前
|
设计模式 存储 缓存
第三篇 结构型设计模式 - 简化复杂系统的结构
第三篇 结构型设计模式 - 简化复杂系统的结构
|
10月前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
[设计模式Java实现附plantuml源码~结构型] 扩展系统功能——装饰模式
|
10月前
|
设计模式
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
146 1
|
10月前
|
设计模式
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
149 0
|
5天前
|
设计模式 Java 关系型数据库
设计模式:工厂方法模式(Factory Method)
工厂方法模式是一种创建型设计模式,通过将对象的创建延迟到子类实现解耦。其核心是抽象工厂声明工厂方法返回抽象产品,具体工厂重写该方法返回具体产品实例。适用于动态扩展产品类型、复杂创建逻辑和框架设计等场景,如日志记录器、数据库连接池等。优点包括符合开闭原则、解耦客户端与具体产品;缺点是可能增加类数量和复杂度。典型应用如Java集合框架、Spring BeanFactory等。
|
2月前
|
设计模式 Java
「全网最细 + 实战源码案例」设计模式——生成器模式
生成器模式(Builder Pattern)是一种创建型设计模式,用于分步骤构建复杂对象。它允许用户通过控制对象构造的过程,定制对象的组成部分,而无需直接实例化细节。该模式特别适合构建具有多种配置的复杂对象。其结构包括抽象建造者、具体建造者、指挥者和产品角色。适用于需要创建复杂对象且对象由多个部分组成、构造过程需对外隐藏或分离表示与构造的场景。优点在于更好的控制、代码复用和解耦性;缺点是增加复杂性和不适合简单对象。实现时需定义建造者接口、具体建造者类、指挥者类及产品类。链式调用是常见应用方式之一。
63 12
|
2月前
|
设计模式
「全网最细 + 实战源码案例」设计模式——模式扩展(配置工厂)
该设计通过配置文件和反射机制动态选择具体工厂,减少硬编码依赖,提升系统灵活性和扩展性。配置文件解耦、反射创建对象,新增产品族无需修改客户端代码。示例中,`CoffeeFactory`类加载配置文件并使用反射生成咖啡对象,客户端调用时只需指定名称即可获取对应产品实例。
92 40