写点什么

可伸缩系统的设计模式

  • 2010-12-14
  • 本文字数:817 字

    阅读完需:约 3 分钟

过去十年所取得的一个主要成就就是面向大众的可伸缩系统的广泛应用,尤其是云系统和某些高可伸缩的Web 应用。比如说,Facebook 平均每秒可以处理1300 万个请求,峰值达到了450 M/s。即便如此,可伸缩系统背后的概念与架构仍然在快速发展着。大约3 年前,来自加利福尼亚洲的软件架构师Ricky Ho 曾撰写博文详细分析了可伸缩系统的现状。3 年后,他认为是时候重新谈谈这个话题了。

Ricky 将可伸缩性定义为

可伸缩性解决的是在持续增长的性能、花费、维护代价以及众多其他因素的情况下如何降低系统的负面影响。

在其最新的博文中,他列举了如下模式:

  • 负载平衡
  • 分散与聚集
  • 结果缓存
  • 共享空间(又叫做 Blackboard)
  • 管道与过滤
  • Map Reduce
  • 大块的同步并行
  • 执行编排

如果说负载平衡、结果缓存和 Map Reduce 已经得到了广泛应用,那么某些模式现在正面临着社会化媒体所带来的新问题。比如说,上个世纪80 年代所提出的大块同步并行现在就作为 Google Pregel Graph Processing 项目的一部分,支持 3 种常见的处理模式:

  • 捕获(比如说 John 通过社交网络联系到了 Peter,那么在这两个 Person 结点间就会建立一个连接)
  • 查询(比如说找到 John 的朋友当中年龄小于 30 且已婚的那些朋友)
  • 挖掘(比如说找到硅谷中最有影响力的人)

Ricky 还介绍了执行编排模式:

该模型基于智能的调度者 / 编排者,用于跨越集群调度准备运行的任务(基于依赖图)。

他说该模式已经在微软的 Dryad 项目中得到了应用,程序员可以“使用成千上万台机器而无需了解并发编程”。

Dryad 程序员会编写几个顺序程序,然后使用单向通道将其连接起来。计算是结构化的,以有向图的方式进行:程序是图形顶点,而通道则作为图的边。Dryad job 是个图形生成器,可以合成任意方向的无圈图。这些图甚至可以在执行期间改变来响应计算中的重要事件。

我们今天所使用的可伸缩性模式仅有 10 年的历史。接下来会有什么限制呢?你有构建可伸缩系统的经历么?忽略了哪些东西呢?

查看英文原文: Scalable System Design Patterns

2010-12-14 12:235251
用户头像

发布了 88 篇内容, 共 273.7 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

Python 中怎样合并数据

张利东

Python

终端Terminal:程序员是如何查询天气预报的?

lmymirror

GitHub 工具 命令行 terminal 终端工具

新人怎么寻求解决问题的方法

波波

编程 职场 新人

面试考试可用,十大排序算法

我不自豪谁志豪

学习 面试 算法

Netty 源码解析(六): Channel 的 register 操作

猿灯塔

Centos的初步配置

玉龙BB

Docker Linux Docker-compose Centos 7

如何消除写作过程中的痛苦,让写作变成一种享受

董一凡

写作

中年危机,我们如何面对?

石云升

生活不奖赏心血来潮

池建强

个人成长 写作

早起实操手册

超超不会飞

效率 生活 自律

原创 | 类应该是匀称和均匀的

编程道与术

从2009到2020,世界编程语言排行榜分析

C语言技术网-码农有道

编程语言

Linux初学-01

Flychen

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (一)什么是单元测试

编程道与术

1分钟理解M2M和IoT概念

老任物联网杂谈

物联网 M2M IoT

LeetCode 153. Find Minimum in Rotated Sorted Array

隔壁小王

算法

职场发展的思考

子不语

生涯规划 职业规划

SpringIOC源码篇-Bean实例化-Spring如何选择类构造器(1)

申屠鹏会

Java Spring Boot

DataGrip常用快捷键

fliter

零基础、非计算机相关专业的如何转型程序员

C语言技术网-码农有道

程序员 转型

LeetCode 565: Array Nesting

隔壁小王

算法

企业招聘的需求决定了C/C++程序员的学习方向

C语言技术网-码农有道

C/C++

死磕Java并发编程(8):CurrentHashMap如何实现高效地线程安全?在Java8中有哪些设计实现的演进?

Seven七哥

Java Java并发 ConcurrentHashMap

部署Hexo博客到VPS

ini

从草根到百万年薪C/C++程序员的二十年风雨之路

C语言技术网-码农有道

c++ 编程语言 C语言

产品周刊 | 第 13 期(20200503)

八味阁

产品 设计 产品经理 产品设计

我们迫切需要块状时间

Neco.W

效率 时间分配 时间管理 工作效率 提升效率

聊聊我对开源的理解

zygfengyuwuzu

开源

NIO 看破也说破(二)—— Java 中的两种BIO

小眼睛聊技术

Java 学习 程序员 架构 编程语言

IT培训机构那些不得不说的事儿

C语言技术网-码农有道

IT培训机构

断章取义,不一样的C/C++语言的学习策略

C语言技术网-码农有道

C/C++

可伸缩系统的设计模式_架构_Jean-Jacques Dubray_InfoQ精选文章