Lec 1 介绍
什么是数据中心(DC)?
- 互联网规模服务 & 云计算的计算基础设施
- 1万服务器, 10万硬盘
- e.g. Goole, Facebook,
- ToB、ToC 服务
简单视角下
- 企业计算的机房扩展版本
- 由大量常见的硬件组件构成
- CPU、DRAM、Disk
- 以太网
- 商业操作系统和软件栈
- 数十万到数十万个计算节点
- 高带宽网络(10Gbps à 40Gbps à 100Gbps)
- 电力供应、冷却、不间断电源(UPS)(50 – 200MW)
- 数据中心管理系统软件(集中式或分布式)
- 实现互联网应用的软件

除了计算机&网络交换机等,你还需要以下共同设计
- 电力基础设施: 电压转换器和稳压器,发电机和UPS(不间断电源)...
- 冷却基础设施: 空调(A/C), 冷却塔、热交换器、空气叶轮...
数据中心动机/好处
- 一些应用需要大型机器,比如搜索引擎等需要强大的计算能力
- 用户体验:提供普遍的访问、灵活性和成本效益,让用户随时随地访问服务、同时确保服务的高可用和快速响应,节省了管理和时间成本
- 供应商的好处(所有的都转换为成本降低)
- 加快应用开发速度
- 升级和修复的便捷部署
- 提供了对存储和其他资源的单一系统视图
- 通过多用户共享硬件资源降低成本
- 通过分摊硬件/存储管理成本降低成本
- 加快应用开发速度

数据中心硬件总览
- 计算和内存资源
- 基于个人电脑的服务器(大多数为x86)
- 定制的Linux OS(针对延迟进行了优化)
- 1U、2U或者刀片式机箱式流行的
- 比如,2个处理器插,几十GB的DRAM, 2块磁盘
- 网络资源
- 与机架交换机连接的10Gbps以太网链路
- 典型使用TCP/IP作为网络协议
- 每台服务器的成本低于每Gbps<$30美金
- 比Infiniband等更快网络(每端口$500)成本更低
- 几个10Gbps链路连接到集群级交换机
- 数据中心内部通常采用两级或三级层次结构
- 其中底层是服务器直接连接到机架交换机,上层是连接到更高级的核心交换机或路由器,以支持整个数据中心的通信和数据流量管理
- 上行链路的过度订阅:\着上层设备(如核心交换机或路由器)的出口带宽与下层设备(如机架交换机)连接的带宽比例较高。例如,1:10的过度订阅表示上行链路的带宽比下行链路的带宽高10倍。这可能导致在网络负载高时出现瓶颈和延迟问题
- 为了改善性能和降低延迟,近年来的设计趋向于减少上行链路的过度订阅比例,例如调整为1:4
- 数据中心内部通常采用两级或三级层次结构
- 与机架交换机连接的10Gbps以太网链路
- 存储资源
- 使用服务器上的磁盘的分布式文件系统
- 跨节点具有更好的容错性,成本更低,扩展性更好
- 网络附加存储(NAS)设备
- 具有磁盘阵列的专用系统,提供文件系统存储服务,并直接连接到网络结构
- 在设备内具有更好的容错性,管理更容易
- 通常设置为RAID配置
- 使用服务器上的磁盘的分布式文件系统
程序猿视角下的DC存储分层

有趣的发现
- 远程内存通常比本地磁盘更快
- 带宽瓶颈
机房的机架布局

- 红色线:控制和带外网络,100BaseT 双绞铜线。用于管理和维护数据中心或网络环境中的设备
- 洋红色: 连接存储网络
- 绿色线: 数据网络(GE, Gigabit Ethernet)
有用的数据

例子说明
生成图像结果页面(包含30个缩略图)需要多长时间
设计1 :串行读取,现场生成256K大小的缩略图
30 seek × 10ms / seek + 30 * 256K / (30 MB/s) =560ms
设计二:并行发出读取请求
10ms/seek + 256K / (30 MB/s) = 18ms
还有很多的选项
- 缓存(单个图像? 整套缓存缩略图?)
- 等待
TCO
集群管理
负责编排应用程序调度和资源分配的软件系统,其目标为
- 确保每个应用程序或请求都能以高性能运行
- 最大化计算资源的利用率
- 减少调度任务的开销,使系统具有良好的可扩展性
不同的设计和权衡
- 集中式调度(一般比较复杂且慢)
- 两级调度(中央协调器将资源分组,各个框架管理自己的资源)
- 分布式共享状态调度(分布式事务决策,但集群状态全局可见)
必须考虑干扰、硬件和任务的异构性、输入负载的变化
监控工具
监控生产环境的应用
- 监控工作任务的执行时间或速率, 与预期性能比较并识别瓶颈
- Gooda@Google:使用“perf record”获取的性能数据处理
- 计数执行周期、缓存未命中、分支预测失败等
- 根据源代码对事件发生位置进行分析
- 识别停滞周期并提供优化建议
- Dapper@Google(或 Zipkin@Twitter)采样完整的请求往返并将请求延迟分解到各个 RPC
数据中心应用
- 3层架构应用(3-tier app)
- e.g. web-email, maps, web docs, 社交网络
- 搜索引擎
- 类似3层应用,时延要求高,比如大多数数据都放在内存
- 虚拟计算