【笔记】读 JeffDean 分布式系统

【笔记】读 JeffDean 分布式系统

今天听了一门课, 讲的 Jeff Dean 在09年的一份PPT: Designs, Lessons and Advice from Building Large Distributed System.

五年前的内容, 现在看仍然收获很大(除了后一半吹水的部分), 做一些笔记.

Computing shifting to really small and really big devices.

计算迁移的方向: big device 即服务器端, small device 即便携设备.

The Machinery

服务器(server)->机柜(racks)->集群(clusters), 共用swicth的racks称之为一个cluster, 一个IDC机房可能有多个cluster.

Architectual view of the storage hierarchy

  • 单server: DRAM 16GB 100ns 20GB/s, Disk 2TB 10ms 200MB/s
  • 单rack: DRAM 1TB 300us 100MB/s, Disk 160TB 11ms 100MB/s
  • 单cluster: DRAM 30TB 500us 10MB/s, Disk 4.8PB 12ms 10MB/s

server->rack->cluster, 容量增大, 通信的开销增加.

Reliability & Availability

举例: MTBF(mean time before failure) 30年的机器, 构建10k的集群, 每天都会有机器fail.

经验: 一个新的cluster头一年内, 平均会碰到0.5次过热关机, 1次电源故障, 1次机架迁移, 20次机架故障, 12次路由重启, 1000次机器故障, blabla, 总之thousands of failures.

downtime behavior matters: 大概55%的failure会在6分钟之内恢复, 80%会在12分钟内恢复.

fault statics matters: 是雪崩类型的故障恢复的统计.

本篇的核心思想之一: 必须做容错设计!

Google Cluster Environment

1000+机器组成的集群.

GFS & sheduler是core service, 扮演了infrastructure的角色.

上层是各种调度任务job task.

chubby提供lock service.

Most systems are Distributed Systems.

必须条件: 隔离问题的设计(容错), 异地的数据中心, 大量的内部service.

break large complex systems down into many services, with few dependencies.

Designing Efficient Systems

本篇的核心思想之二: 面向物理的量化设计.

必须知道的参数:

  • 0.5ns: L1 cache reference
  • 5ns: branch mispredict, 是指cache未命中
  • 7ns: L2 cache reference
  • 25ns: mutex lock & unlock
  • 100ns: main memory reference
  • 3000ns: compress 1Kb with Zippy(这个东东是google在传输时做压缩大量使用的)
  • 0.02ms: send 2Kb over 1Gbps network
  • 0.25ms: read 1MB sequentially from memory
  • 0.5ms: round trip within same datacenter
  • 10ms: disk seek
  • 20ms: read 1MB sequentially from disk
  • 150ms: send packet 加州->冰岛->加州

这里补充一下关于SSD的相关数据(在这篇ppt出来之时ssd还没有广泛应用).

  • read a page(4k) 0.025ms
  • write a page(4k) 0.2ms
  • erase a block(64 or 128 pages) 1.5ms, 生命周期内最多擦出5k到20k次.

Back of the Envelope Calculations

"信封背面"是个口语, 指纯经验的毛估性能.

一个好的架构师, 应该在东西做出来之前, 对系统的性能有一个靠谱的估算, 这是一项很重要的能力.

  • write microbenchmarks, 这样能更好的理解性能.
  • know your basic building blocks, not just their interfaces, but understand their implementations.
  • encoding your data: CPU最快, 内存和带宽有限, 压缩编码对大部分系统很重要, etc.
  • designing & building infrastructure, infrastructure是指相对底层的基础组件, 例如GFS, 设计时保持KISS.
  • design for growth: 预估增长, 设计时做预留.
  • interactive apps: design for low latency. 涉及到交互的app需要尽量低延迟.
  • making applications robust against failures: 容错设计的鲁棒性.
  • add sufficent monitoring/status/debugging hooks: 监控,debug的工具要保证.

Google Infrastructure

GFS, 设计理念源自abstract leaky: 直接利用了磁盘的顺序读和顺序写特性, 面向裸设备, 抛弃中间层.

  • master保有meta信息.
  • 文件按chunk存储(64M).
  • 每个chunk存储三份, 分布于不同节点.
  • 磁盘碎片过多时做一次整理, 直接顺序拷贝至新节点.

Google Protobuf, protocol description language is a must. protobuf在语言设计, 效率, 版本兼容上做的都不错.

Google MapReduce, 输入数据->map分解问题->打乱排序->reduce合并借->输出结果.

Google BitTable, 大量的半结构化的数据(稀疏矩阵), blabla ...

重要参考文献

  1. Ghemawat, Gobioff, & Leung. Google File System, SOSP 2003.
  2. Barroso, Dean, & Hölzle . Web Search for a Planet: The Google Cluster Architecture, IEEE Micro, 2003.
  3. Dean & Ghemawat. MapReduce: Simplified Data Processing on Large Clusters, OSDI 2004.
  4. Chang, Dean, Ghemawat, Hsieh, Wallach, Burrows, Chandra, Fikes, & Gruber. Bigtable: A Distributed Storage System for Structured Data, OSDI 2006.
  5. Burrows. The Chubby Lock Service for Loosely-Coupled Distributed Systems. OSDI 2006.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Netkiller

EOS 智能合约中数据表的操作方法

中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

2759
来自专栏飞总聊IT

大数据那些事(11):复活的LSM-Tree--BigTable的\b系统实现(修)

修正一些小错误。 BigTable是一个非常复杂的系统,发表的论文面面俱到,但是每个方面都写得并不是很清楚。所幸Google开源了LevelDB这个Key-Va...

3865
来自专栏施炯的IoT开发专栏

Windows Phone 7 数字罗盘使用指南

1. 什么是数字罗盘,和指南针有什么关系?     指南针是我们外出旅游时,用来指示方向的一种工具。常见的机械式指南针,它是一种根据地球磁场的有极性制作的地磁指...

19010
来自专栏大数据挖掘DT机器学习

Python爬取链家网数据:新房楼盘价格分析

本文将详细讲解利用python爬虫收集了链家网800多条公开数据并作简单分析。数据真实性有待考查,本文仅作为数据分析入门者参考。 安装环境 Window 10 ...

4495
来自专栏佳爷的后花媛

如何自制条形码扫描器

在文章之前要先感谢我的老师黄小平先生,在制作这个扫描器期间,给了我们很大的帮助和指导. 先说下这个条形码扫描器的预期功能: 如名称所示,主要达到的功能就是实...

4453
来自专栏FreeBuf

百足之虫死而不僵:Auto456家族木马的死灰复燃

作者 tianjiyun 就在今年上半年,456游戏大厅还是金钱的代名词。一个看起来并不起眼的游戏平台,注册用户却达2000余万,每天获利最高可达100余万。这...

2197
来自专栏黑白安全

高清无码!比鬼片还刺激!且听“诡娃”远控的这首惊魂曲

近日,360云安全系统发现一款名为“诡娃”的远控木马,正通过钓鱼软件、网页挂马等多渠道扩散。“诡娃”除了能进行操控中招电脑等行为外,还会通过控制指令让中招机器弹...

1072
来自专栏机器人网

为什么采用4~20mA的电流来传输模拟量?

大家可能会非常熟悉RS232,RS485,CAN等工业上常用的总线,他们都是传输数字信号的方式。那么,我们用什么方式来传输模拟信号呢?工业上普遍需要测量各类非电...

2688
来自专栏知晓程序

现实生活压力大,不如用这 4 款小程序去二次元世界找「老婆」

纸片人那么好那么可爱,画出来的场景那么美那么酷炫,低等维度像一个梦,梦里什么都有。

1075
来自专栏算法+

MP3 编码解码 附完整c代码

图像方面,已经有stb_image,spot,freeimage等编解码库系列,做得特别赞。

1374

扫码关注云+社区

领取腾讯云代金券