写点什么

从 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:163025
用户头像

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

关注

评论

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

无处不在的Kubernetes ,难用的问题解决了吗?

望宸

容器 云原生 PaaS KubeVela kubenetes

阿里大牛珍藏版:高并发系统设计(全彩版手册)带你从基础走向实战

Java 架构 面试 后端 高并发

这几种Java异常处理方法,你会吗?

华为云开发者联盟

Java 数组 异常 程序

Vue进阶(幺叁捌):vue 路由传参的几种基本方式

No Silver Bullet

Vue 路由 10月月更

技术干货 | jsAPI 方式下的导航栏的动态化修改

蚂蚁集团移动开发平台 mPaaS

容器 大前端 移动开发 mPaaS 动态化

官方线索|2021科大讯飞全球开发者大会

搬砖人

AI 大会 1024我在现场

云小课丨SA基线检查:给云服务来一次全面“体检”

华为云开发者联盟

态势感知 华为云 基线检查 SA 上云合规

iOS签名校验那些事儿

百度Geek说

后端

关于征集第六届世界智能大会平行论坛活动方案的通知

InfoQ 天津

Apache APISIX 社区新里程碑——全球贡献者突破 300 位!

API7.ai 技术团队

开源社区 API网关 Apache APISIX

开源许可协议介绍

webrtc developer

【万字长文】吃透负载均衡

Java 负载均衡 架构 面试 后端

腾讯云,五轮面试,六个小时,灵魂拷问,含泪拿下 60W offer

收到请回复

Java 面试 大厂Offer

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

Felix

Python 编程 Code Programing 阅读代码

第六届世界智能大会主题征集活动入选主题公布

InfoQ 天津

【Flutter 专题】28 易忽略的【小而巧】的技术点汇总 (五)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

新书榜第一的《图解产品》,帮助内卷中的产品经理实现跨越式发展!

博文视点Broadview

java springboot自习室选座预约小程序源码

清风

计算机毕业设计

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

收到请回复

Java jdk 面试

Apache APISIX 社区周报 | 2021 9.13-9.30

API7.ai 技术团队

开源社区 api 网关 社区周报 Apache APISIX

Apache APISIX 社区成员助力 openEuler 发布第一个社区创新版

API7.ai 技术团队

开源 openresty openEuler api 网关 Apache APISIX

基于HarmonyOS分布式技术,这群学生赋予冰箱更智能的体验

科技汇

10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张

阿里云视频云

阿里云 音视频 高清视频 视频编解码 视频云

☕【Java技术指南】「技术盲区」看看线程以及线程池的异常处理机制都有哪些?

洛神灬殇

Java 线上程序问题 线程异常 10月月更

爱奇艺埋点投递治理实践

爱奇艺技术产品团队

数据治理 埋点 pingback

一周信创舆情观察(9.27~10.10)

统小信uos

这篇 python 文章,是过去你错过的 python 细节知识点,滚雪球第4季第15篇

梦想橡皮擦

10月月更

华为云企业级Redis:助力VMALL打造先进特征平台

华为云开发者联盟

华为云 云数据库 GaussDB(for Redis) 华为商城 VMALL

从Ftrace开始内核探索之旅

金蝶天燕云

Linux内核 Ftrace

产业互联网下半场,SaaS平台的机遇与挑战

雯雯写代码

SaaS

怎样才能画出清晰明了的时序图

华为云开发者联盟

接口 模型 UML 系统 时序图

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