写点什么

可伸缩系统的设计模式

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

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

关注

评论

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

RocketMQ 学习社区重磅上线!AI 互动,一秒了解 RocketMQ 功能源码

阿里巴巴云原生

阿里云 AI RocketMQ 云原生

十大理由,说清企业为何需要 CI/CD

极狐GitLab

DevOps 自动化 CI/CD 降本增效 效能提升

GOTC全球开源技术峰会|Sermant首次亮相,推进云原生微服务治理技术的演进

华为云开源

#云原生

C语言编程—预处理器

芯动大师

C语言 预处理器 6 月 优质更文活动

Unlimiformer:用搜索的思路来处理注意力机制长度限制

Zilliz

Transformer

Flink实例:Flink流处理程序编程模型

TiAmo

scala 数据流 Flink 平台 6 月 优质更文活动

1v1视频交友APP的详细搭建部署步骤和视频交友APP核心功能介绍

山东布谷科技胡月

一对一直播源码 一对一直播系统 1v1语音系统搭建 视频社交APP开发 1v1交友app开发

ChatGPT赋能产品管理

俞凡

人工智能 产品管理 ChatGPT

首个锚定BTC Mining算力的HAG证券通证,或成传统投资者的另一选择

股市老人

红杉中国独立,艰难时期“美元基金”投资路径浮出水面

B Impact

MobPush 查看推送数据

MobTech袤博科技

搞定大模型,AI 大底座系列云智公开课 6 月 20 日开始上线

Baidu AICLOUD

大模型 AI 大底座

开放源代码平台Flynn的架构与实现原理

穿过生命散发芬芳

Flynn 6 月 优质更文活动

聊聊那些奇葩的代码规范 —— 滥用 lombok

HoneyMoose

JMeter笔记10 | JMeter检查点

测试 Jmeter 性能测试 自动化测试 接口测试

ESP8266获取天气预报信息,并使用CJSON解析天气预报数据

DS小龙哥

6 月 优质更文活动

程序员如何成长

光毅

成长 程序员‘

如何设计一组会出现死锁(Deadlock)的 ABAP 程序

汪子熙

Java 死锁 SAP abap 6 月 优质更文活动

2023-06-07:Redis 持久化方式有哪些?以及有什么区别?

福大大架构师每日一题

redis 福大大

GitOps 最佳实践(上)| 基于 Amazon EKS 构建 CI/CD 流水线

亚马逊云科技 (Amazon Web Services)

微服务

能力,责任心和危机感(67/100)

hackstoic

管理

【Netty】「NIO」(四)消息边界与可写事件

sidiot

Java 后端 Netty 6 月 优质更文活动

探访官招募 | InfoQ 写作社区 邀您探访 2023 亚马逊云科技中国峰会

InfoQ写作社区官方

热门活动

Java 8升级Java 17过程记录

程序员架构进阶

jdk8 升级 java17 6月月更 6 月 优质更文活动

Web 界面开发指南,持续更新

南城FE

CSS 前端 交互设计

LeetCode:2695. 包装数组,详细解释

Lee Chen

JavaScript LeetCode

什么是双机热备技术?华为和思科如何实现双机热备?

wljslmz

6 月 优质更文活动

文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题

福大大架构师每日一题

福大大 ChatGPT

【Python金融-002】快速计算收益,批量做T必备!

程序员晚枫

Python 数据分析 金融 股票 做T

CoinList打新以太坊虚拟机Neon

币离海

以太坊虚拟机 neon Coinlist Solana

瓴羊Quick BI报表分析工具,大幅提升企业经营效率

夜雨微澜

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