由大数据文摘制作
我们的数据集群目前规模已经超过1万,总数据量以EB为单位,每天新增的数据量以PB为单位……
这些数字来自某移动互联网公司在一次技术交流会上介绍其数据处理能力。我们不谈EB,就说1PB意味着什么?大概是2亿张照片,或者2亿首MP3音乐,如果一个人连续听这些歌,可以听1900年。
人们或许会惊叹企业强大的数据处理能力,但并非所有企业都具备这样的能力。如果激增的数据量超出了数据处理能力,就会导致“信息过载”的问题。为此,人类发明了“搜索引擎”和“推荐系统”,可以过滤信息,高效识别和应用“关键”数据。
然而,根据IDC《数据时代2025》报告的预测,到2025年,全球用于数据分析的数据总量将增长50倍,达到5.2ZB;认知系统“接触”的分析数据总量也将增长100倍,达到1.4ZB!这意味着,用于选择和过滤数据的推荐系统和搜索引擎也将无法逃脱“信息过载”的困扰。
推荐系统本质上是一个信息过滤系统,通常分为三个阶段:召回、排序、再排序。每个阶段都经过层层过滤,最终从海量数据中筛选出几十条用户可能感兴趣的信息推荐给用户。更直接地说,为了实现推荐系统的这三个关键阶段,需要四个模块化层次,分别是数据、存储(memory&storage)、服务和应用程序。
存储层用于存储数据层传来的数据;服务层是对外提供接口的部分;应用层根据不同场景配置的召回策略直接对接服务层,发起请求获取推荐反馈。显然,数据和存储是推荐系统的底层逻辑,可以决定引擎能走多远,而服务层和应用层则是上层建筑,对用户体验起着重要作用。
图1:推荐引擎的模块化架构
因此,如果想从根本上解决推荐系统信息过载问题,必须从数据和存储层入手。
推荐和搜索背后的挑战:数据硬件瓶颈
自文字发明之前,人类就一直在寻找“正确”的方式来存储“正确”的数据。例如,书写工具作为原始的存储技术,使人类能够记录自己的生活。19 世纪 90 年代,打孔卡的出现为人类打开了新时代的大门,标志着现代信息编程的出现。
打孔卡所能处理的数据当然不能一劳永逸地满足人类经济生活的需求。1966年,动态随机存取存储器(DRAM)出现,开创了使用电容器来存储信息的先河。所谓的“动态”并不是指某种内部功能,而是指电容器最终会失去电荷,因此必须定期“动态”刷新。这意味着一旦DRAM断电,就会面临数据丢失的风险。
内存专注于“数据存储”,只有与“数据处理”相结合,才能形成数据价值的闭环。1971年,英特尔推出了世界上第一款CPU,完成了这一闭环。此后,数据处理硬件的发明一直沿着内存和CPU并存的格局发展。
如今,考虑到大数据时代的三大现状,即数据量的激增、数据类型的日益增多、数据处理的并发性和速度的不断提升,数据处理和存储硬件技术也是时候进行重大升级了。其实,如果我们将这三个特点融入到推荐系统中,不难发现,在内存上下功夫,对解决推荐系统信息过载的问题会更有帮助。
我们来重点说一下:数据规模、高并发、实时推荐等是所有基于大数据提供推荐服务或产品的公司都会遇到的共同问题:
1、数据量的指数增长问题:推荐越精准、越个性化,就越需要为每个用户保存一份推荐数据,这意味着数据量会随着用户数呈线性增长。
2.数据稀疏性问题:推荐系统需要处理的规模越来越大,用户和信息(如音乐、网页、文档等)的数量往往以亿计,两个用户的选择重叠度非常小。
3.需要快速、及时地响应用户请求(计算):随着新闻、短视频等消耗用户碎片时间的应用的出现,推荐系统更加依赖实时的推荐策略。
正如前面提到的,解决这些问题,需要从“数据”和“存储”两个底层逻辑上寻找答案。
解决第一个问题需要大容量的存储设备;第二个问题需要“借力”算法,比如利用扩散算法从原来的一阶关联走向二阶甚至更高阶的关联,甚至利用迭代优化的方法考虑全局信息导致的关联。“全局”二字需要高性能处理器的支持;而解决第三个问题,则需要更高性能的存储的支持。比如用户在使用APP时,留给推荐系统的处理时间往往以毫秒为单位,这对推荐系统存储部分的吞吐量、响应速度、稳定性以及意外中断后的恢复能力提出了更高的要求。
从以上三种解决方案不难看出,存储既需要更大的容量,也需要更好的性能。换言之,推荐系统的IT基础设施不仅要满足海量数据存储的承载能力,还要保证海量数据下计算和分析的时效性。换言之,以上三个问题是紧密相连的,必须找到“三管齐下”的解决方案。
“数据硬件”新趋势:颠覆内存与存储的边界
三项措施同时采取,说起来容易,但如何才能做到呢?其实,只要活出一步,就能活出所有步子。
这一步是为了将更多的数据“存储”到更靠近CPU的地方以便进行处理。
传统上,业界存储数据的主流产品包括DRAM、基于NAND技术的固态硬盘(SSD)以及传统机械硬盘(HDD)。这三种技术各有优缺点。例如,DRAM虽然性能好、延迟低,但容量有限、价格昂贵、数据易失性强。相比于DRAM,固态硬盘(SSD)可以提供更大的容量和更低的成本,但无法提供同等的性能水平。传统硬盘(HDD)更是如此,它们拥有更优的容量和成本,但由于采用旋转盘片,难以避免与可靠性、物理空间要求、散热等因素相关的总体拥有成本问题。
总结一下,上述产品的缺点可以概括为:距离CPU较近的产品性能虽然好但难以满足大量数据承载和数据持久化的需求,距离较远的产品容量虽然大但在性能上却远远落后于DRAM。
图1:传统内存存储架构在性能和容量上都存在差距

如何解决呢?目前业界的一个解决方案是开辟一条新的产品技术路线:打破内存和存储各自的特点,将两者的优势结合起来。
而这一技术路线的提出者和重要践行者,就是我们熟悉的英特尔,其将内存与存储特性进行融合的产品被称为英特尔傲腾持久内存(Optane PMem)。该产品采用的傲腾存储介质是这一融合的基石,被众多专家和用户视为一项存储“黑科技”。
采用这项存储“黑科技”的Optane持久内存的特点可以用一句话来概括,拥有接近DRAM的性能,远超NAND SSD,但容量却比DRAM更大(单颗容量可以达到128GiB、256GiB和512GiB),价格或者说单位容量成本更加实惠,并且具备数据非易失性(断电后数据不会丢失)。
图 1:采用 Optane 持久内存和 Optane SSD 的全新内存存储架构
内存与存储优势的融合,使得Optane持久内存能够提供两种工作模式:
第一种是App Direct模式,允许应用程序通过load/store字节访问方式直接访问持久内存,这样断电后保存到持久内存的数据也不会丢失,访问持久内存的延迟接近DRAM。
第二种是内存模式,Optane持久内存可以作为易失性存储器,用于DRAM以外的容量扩展。
图1:Optane持久内存的两种工作模式
至此,结果显而易见:以 App Direct 模式工作的 Optane 持久内存正是我们所寻找的,能够兼顾推荐系统两大底层逻辑——数据和存储。它不仅能够将更多数据放在靠近 CPU 的位置,还能满足推荐系统在高速数据处理过程中对性能和可靠性的要求。
连接内存与存储,让数据从负担变成“金矿”
目前,已有多家在推荐技术方面处于业界领先地位的公司认识到并开始利用Optane持久内存的上述优势,百度是较早采用Optane持久内存的公司之一。
人们对百度的传统认知是它提供搜索引擎服务。事实上,百度的搜索引擎早已利用公司在大数据和AI方面的技术优势和积累,增加了基于信息聚合的Feed流服务,可以向用户推送个性化内容。而这项服务的背后,数据层和存储层的关键作用,就是其核心的内存数据库Feed-Cube。
由于业务的快速扩张,百度的 Feed 流服务需要 Feed-Cube 部署更大的内存容量来承载激增的数据量。然而 DRAM 的高成本和有限的容量规格,使得内存扩容带来的 TCO 压力不断加大。在此情况下,百度在第一代英特尔® 傲腾™ 持久内存(100 系列)发布后不久,就将目光瞄准了它。
于是在 2019 年,百度对如何在 Feed-Cube 上发挥傲腾持久内存的优势进行了一系列尝试,对比测试了仅使用 DRAM、DRAM+持久内存、仅使用持久内存三种情况对 Feed-Cube 的支持。结果表明,在第二代至强可扩展处理器与傲腾持久内存组合上,如果采用 DRAM 与持久内存混合配置,在 2000 万并发访问压力下,Feed-Cube 的平均访问时间只会增加约 30 微秒(约 24%),整机 CPU 消耗会增加 7%。性能波动完全可以接受,而且单台服务器上的 DRAM 使用量可以减少一半,从成本角度来看,这是一个好消息。
百度还发现,即使仅基于Optane持久内存构建的Feed-Cube,在50万次每秒查询(QPS)的访问压力下,其平均延迟相比仅配置DRAM的方案提升了约9.66%,性能波动在可以接受的范围内。
图1:百度Feed-Cube内存配置变化路径,以及不同路径或配置下处理延迟对比
对Optane存储“黑科技”优势的初步认可,使得百度开始在更多关键应用场景探索其应用价值,包括检验其持久性以加速关键业务的数据恢复、优化BigSQL数据处理平台(基于SPARK SQL)的交互式查询性能和成本等。
这些成功的尝试最终促使百度决定基于傲腾持久内存在存储引擎层面开始更大的创新或转型,即推出利用持久内存和PMDK(英特尔开源持久内存开发套件)优化的新一代用户态单机存储引擎,为百度线下和部分线上业务提供高效、稳定、低延迟、低成本且易于扩展的存储服务。
该引擎可应用于块、文件、对象存储等多种应用场景,使用Optane持久内存(APP Direct模式)作为引擎缓存层的存储介质,用于存储元数据、缓存和索引,并利用PMDK进行内存调度,加速这些数据的读写,并最大限度减少资源损耗。
图:SNIA编程模型与PMDK工作原理图。Optane持久内存遵循SNIA编程模型。PMDK可以帮助应用程序直接访问持久内存设备,而无需经过文件系统的页面缓存系统、系统调用和驱动程序,避免了数据IO输出的开销,大大降低了数据延迟。
经过测试,这款新存储引擎写入一个 4K 数据大约需要 4.5 微秒,而将持久内存替换为 DRAM 则大约需要 3 微秒,在延迟上差别不大。不过使用 DRAM 和持久内存的成本差别很大。同样的成本投入,持久内存的空间是 DRAM 的三倍,这意味着可以缓存更多的数据,并以更合理的方式存储数据,有效提高后端存储设备的 IO 效率。
百度此次尝试将傲腾持久内存导入到包括Feed流服务在内的各项产品和服务中,以及利用其开发新一代用户态单机存储引擎的意义,不仅在于利用这一存储“黑科技”解决了自身的业务需求,更在于傲腾持久内存在搜索、推荐系统以及更多大数据场景的应用的重要探索,能够为正在面临或即将面临同样信息过载问题的企业和用户提供值得借鉴的宝贵经验。
或许不久之后,会有更多依赖搜索、推荐技术或服务的公司引入傲腾持久内存,尤其是英特尔今年 4 月份刚刚发布了与傲腾持久内存配合使用的全新算力——用于单双路服务器的第三代至强可扩展处理器。其内存通道支持从上一代的 6 通道升级为 8 通道,速度也从上一代的 2666MT/s 提升至最高 3200MT/s,搭配 DRAM 与傲腾持久内存 200 系列使用时,每通道内存容量最高可达 6TB。这款新处理器还支持 PCI-E 4.0 技术,并加入了支持 PCI-E 4.0 的 Optane SSD P5800X(同样基于傲腾存储介质打造),预示着傲腾 SSD 与傲腾持久内存之间的数据交互将进一步加速。
图:两款全新存储“黑科技”产品——Optane持久内存200系列与Optane SSD P5800X
由此不难看出,英特尔对这项存储“黑科技”的改进、优化、升级和普及的步伐一直在持续,甚至可能更快。现在又有消息称,下一代傲腾持久内存单颗容量将达到1TB……如此一来,或许大家担心存储系统“信息过载”的日子,离我们越来越远了。
每一个点击“观看”的人都会变得更有魅力!





























