写点什么

从 SDF 发展看百度的基础架构技术之路

  • 2014-08-18
  • 本文字数:2293 字

    阅读完需:约 8 分钟

最近,百度基础架构部高级架构师欧阳剑在“中国计算机学会通讯”期刊中发表了题为“百度基础架构技术发展之路”的问题,从“ASPLOS 2014 SDF 论文”、“为什么要发表论文”、“混合研究发展之路“、 “基础结构技术”等四个方面详细阐述了百度近几年在基础架构方面的心得。

据欧阳剑介绍,软件定义闪存 (Software- Defined Flash, SDF), 最早是由百度公司前首席架构师林仕鼎在 2011 年初提出来的。当时百度正在做新一代的存储系统, 考虑到传统的固态硬盘 (solid state disk, SSD) 在性能和成本方面的诸多缺陷, 如带宽利用率低、空间利用率低 及性能的不可预测等, 需要面向 数据计算中心重新设计 SSD。于是, 我们开始研制 SDF。SDF 是一个软硬件协同系统, 完全颠覆了 SSD 的性能。SDF 有如下几个特点:

  • 底层 Flash 通道用户态的软件是可见的, 让软件来管理数据的布局 (layout), 使得硬件的并行性能得到充分发挥。
  • 基于层次到竖井的设计理念, 实现了扁平的新文件系统和 IO stack, 提高了可扩展性并降低了延时。
  • 与存储系统相结合, 读写块的大小尽量与硬件友好。
  • 资源全局利用, 取消硬件通道间的异或校验, 存储系统的三副本本身能保证数据的可靠性。

正如欧阳剑所说,做工程和做研究其实是两条并行的道路, 并没有太多的交集。一个感性的想法离发表论文可能不太远, 但离实际的规模应用还有十万八千里。两者对做事情的方法要求也很不同, 一个公司如果要想把这两者结合在一起, 并且出成果, 除了需要工程师的不懈努力外, 还需要一套可行的研究及工程研发体系作保障。比如:

第一批 20 台, 第二批 100 台, 第三批 500 台, 每次上线都要运行很长一段时间后下一批才会再上线。前 三批稳定运行半年多, 一直都非常顺利。可是真的没有问题了吗? 我们有些庆幸、甚至有些怀疑, 当我们以为这个项目将要顺利完成的时候, 问题终于在第四批 1000 多台的上线中暴露出来。因为在进行硬件设计时的经验不足, 对现场可编程门阵列 (FPGA) 的输入 / 输出 (I/O) 没有做足够的约束, 导致在数据量大的时候会出现数据不可靠的问题, 直接影响了线上的使用。最初我们以为是硬件逻辑问题, 一直没办法定位, 那段时间我们承受着巨大的压力。如果放弃, 不仅仅是一年多的努力前功尽弃, 还会给公 司带来巨大的经济损失, 例如硬件采购成本。经过两三个月的艰难调试, 在无数次尝试之后, 发现有可能是 I/O 约束问题, 在修改约束之后, 数据的可靠性大大 提高, 使得第四批产品也顺利上线, 并且性能数据非常好。

对于“百度为什么要发表论文”这个问题,欧阳剑表示,主要目的是建立技术品牌, 扩大技术影响力, 从而吸引更多优秀人才加盟百度。另一个原因是通过公开自己的技术, 回馈社会。

互联网公司拥有大数据和大系统, 具有做系统技术研究得天独厚的优势。以百度为例, 有超过 1000PB 的数据、单个分布式计算集群过万台的服务器。 互联网公司的另一个优势就是有很多真实的问题、挑战和需求, 这些都是与互联网用户直接相关的, 基于这些问题、挑战和需求来做研究, 成果也会直接反馈到用户体验上, 更容易引起大家的兴趣, 也更容易让人理解。

文中特别提到了“百度的混合研究发展思路”,比如,百度的基础架构部门到目前为止还没有纯粹的研究人员, 工作人员的研究工作都是穿插在日常的工程项目中。这些研究工作的唯一目标就是用更大胆、更超前的想法来把系统或者产品做得更好, 这些研究最终都是要应用到实际的系统或者产品中。

无论是 SDF、 ARM, 还是我们现在正在做的一些工作, 都是世界范围内的先例。我们做 SDF 的时候, 需要重新设计软件和硬件, 硬件的架构和软硬件之间的接口都与传统的 SSD 不同, 而且我们的用户又是非常关键的“网页库”, 可以有很多理由让这个项目不能落地, 例如“新产品不稳定”,“新的架构没经过验证”等等。而且刚开始的时候,SDF 确实出现了不稳定的情况。如果一开始我们就被困难吓倒, 或者找借口不愿意承担风险, 大家就不会看到今天 SDF 的成果。ARM 项目也一样, 2011 年初百度开始做 ARM 服务器的时候, 遇到了很多困难, 例如 CPU 是 32 位的、大量代码要移植、产业链不成熟、没有参考经验等等。而且业务方是百度云, 承载了一亿多的用户, 绝对不能出问题。三年后, 百度的 ARM 服务器已经大规模应用。前不久笔者与脸谱公司数据中心的工程师聊天时了解到, 他们在 2011 年的时候也评估过 ARM 服务器, 但发现 CPU 是 32 位的, 需要移植大量的代码, 最终就放弃了。事实上, 从 x86-64 到 ARM-32 的移植并没有想象中的那么复杂。百度只靠一个工程师, 花了不到半年时间就完成了一百多万行代码的基础库和存储系统的移植和测试。

欧阳剑提到了“全栈式 (full stack, 从硬件到软件) 自主开发”在百度基础技术的盛行:这和国内其他公司喜欢完全使用开源方案形成鲜明的对比。这样设计主要出于几个考虑:

  • 首先, 百度业务发展很快, 基础架构必须能跟上并推动业务发展, 开源社区方案往往没办法做到这么快的迭代, 例如百度的 MapReduce 可扩展性优化比开源方案早了两年。
  • 其次, 如果只在开源方案上修修补补, 时间长了, 容易丧失做大系统的能力, 毕竟维护一个开源系统并做故障修复 (bug fix) 所需要的工程团队和工程能力, 和从头开发一个大系统所要求的能力是不同的。
  • 第三, 全栈式自主研发能真正做到软硬件协同, 从而真正达到系统最优, 而开源方案一般只关注某一个领域或系统里面的某一个层次, 很难做到系统最优。最明显的是, 百度有基于 ARM 和 SDF 的存储系统, 能做到单位存储成本最低或者单位吞吐成本最优。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-18 09:163403
用户头像

发布了 501 篇内容, 共 276.0 次阅读, 收获喜欢 63 次。

关注

评论

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

Jedis 参数异常引发服务雪崩案例分析

vivo互联网技术

服务雪崩 Redis集群模式 主从切换 Jedis参数设置

对线面试官-Redis 十一 | 双写一致性问题

派大星

Java 面试题

百度知道上云与架构演进

百度Geek说

云原生 架构演进 业务上云 企业号 7 月 PK 榜

点云标注在自动驾驶中的挑战

数据堂

什么是 JSON:一个简洁易懂的入门指南

Apifox

Java json 程序员 开发 Postman

基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等

汀丶人工智能

人工智能 自然语言处理 知识图谱

【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

daydayup

24款数据可视化工具介绍

2D3D前端可视化开发

数据分析 web前端 数据可视化工具 可视化看板 数据可视化软件

浅析本地缓存技术-Guava Cache | 京东物流技术团队

京东科技开发者

Java 缓存 Guava Cache Guava 企业号 7 月 PK 榜

大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解、Zero-shot CoT、Few-shot CoT 以及在LLM上应用| 社区征文

汀丶人工智能

人工智能 大语言模型 LLM模型 年中技术盘点 思维链

openGauss DBMind上的多指标关联性分析介绍

daydayup

opengauss

思考:数字卫星可视化如何实现?

DevOps和数字孪生

仿真建模 数字卫星

深耕行业创新 引领视听未来 | 宇视亮相北京Infocomm China 2023展会

新消费日报

【我和openGauss的故事】openGauss逻辑备份恢复

daydayup

openGauss数据库源码解析系列文章——AI技术(二)

daydayup

opengauss

订单逆向履约系统的建模与PaaS化落地实践 | 京东云技术团队

京东科技开发者

领域建模 企业号 7 月 PK 榜 订单逆向履约 快退

这些大数据传输解决方案保证了企业快速传输和数据可靠性

镭速

高速传输 大数据传输 快速文件传输

点云标注在自动驾驶中的重要性

数据堂

为什么要做稳定性保障?

老张

SRE 稳定性保障

【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

daydayup

极客时间架构实战营模块一作业

德拉古蒂洛维奇

#架构实战营

MobPush 推送限制策略

MobTech袤博科技

程序员 前端 push 智能推送 推送

【我和openGauss的故事】 openGauss 5.0.0 分区表增强

daydayup

opengauss

【我与openGauss的故事】openGauss 5.0企业版主从部署,实战狂飙

daydayup

opengauss

百亿规模京东实时浏览记录系统的设计与实现 | 京东云技术团队

京东科技开发者

数据 离线 企业号 7 月 PK 榜 浏览记录

掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

用热爱,走一些“远”路!

禅道项目管理

【航遥 × ModelWhale】AI for Science 科研范式改革

ModelWhale

人工智能 云计算 算力 遥感 地球科学

社区征文 | 记一次“雪花算法”造成的生产事故的排查记录

悟空聊架构

架构 雪花算法 生产事故 悟空聊架构 年中技术盘点

12 点半!Voxel51 亚太地区计算机视觉线上 Meetup,速来!

Zilliz

计算机视觉 Milvus Zilliz voxel51

openGauss资源池化开发者入门指南

daydayup

opengauss

从SDF发展看百度的基础架构技术之路_DevOps & 平台工程_崔康_InfoQ精选文章