写点什么

可伸缩系统的设计模式

  • 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:235248
用户头像

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

关注

评论

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

Qt | 深入了解Qt的视图类

YOLO.

qt 10月月更 C++

一文读懂web标准的基石:web IDL

水鱼兄

说说React-Router底层实现?-面试进阶

beifeng1996

React

一次性学懂Excel中的Power Query和Power Pivot使用

博文视点Broadview

面试官:说说React-SSR的原理

beifeng1996

React

Java中的常量和变量

共饮一杯无

Java 10月月更 常量与变量

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

结构化克隆:浏览器的序列化机制

水鱼兄

使用 SAP BTP 创建一个 Spring Boot Java 应用

汪子熙

云原生 SAP Netweaver 10月月更 btp

Mybatis批量插入数据

源字节1号

软件开发 后端开发

详解数仓的锁相关参数及视图

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

Python进阶(八)编写带参数decorator

No Silver Bullet

Python 10月月更 decorator

Qt | 实现自定义验证码输入框控件

YOLO.

qt 10月月更 C++

crossorigin属性:为什么它是避免tainted canvases的关键?

水鱼兄

聊聊面试中的过滤器与拦截器

TimeFriends

实时营销引擎在vivo营销自动化中的实践 | 引擎篇04

vivo互联网技术

服务器 架构设计 引擎

2022云栖大会|EMAS专项嘉宾领票通道现已开启

移动研发平台EMAS

云计算 阿里云 低代码 云栖大会 行业峰会

Linux策略路由详解

京东科技开发者

数据库 Linux 公有云 云主机 策略路由

智慧城市交通 Sovit3D打造智慧交通可视化决策系统

数据可视化平台

物联网 智慧交通 三维可视化 智慧城市交通 城市交通系统

开发者 J 有意思|1024 开发者嘉年华活动正式启幕

Jina AI

人工智能 开源 开发者 工程师 1024

全球第一!新一代云原生实时数仓 SelectDB 登顶 ClickBench 榜单!

SelectDB

性能测试 Clickhouse 分析型数据库 数仓 SelectDB

现在啥软件都有开源,BI 呢?干货推荐

jiangxl

找到字符串中所有字母异位词

掘金安东尼

算法 10月月更

Java的八种基本数据类型

共饮一杯无

Java 基本数据类型 10月月更

问:你是如何进行react状态管理方案选择的?

beifeng1996

React

Python进阶(九)Python陷阱:Nonetype

No Silver Bullet

Python 10月月更 Nonetype 实例定义方法

【LeetCode】滑动窗口的最大值Java题解

Albert

LeetCode 10月月更

HTML标准第二章总结:HTML的基础设施

水鱼兄

以整数解析为例,如何读懂标准里的算法?

水鱼兄

手写一个Redux,深入理解其原理-面试进阶

beifeng1996

React

一次磁盘占用率 100% 的排查记录

悟空聊架构

Docker 磁盘 悟空聊架构

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