英特尔® 傲腾™ 持久内存是Intel在2019年发布的一款革命性的产品,英特尔® 傲腾™ 持久内存是一种全新的内存类型,其架构设计旨在从数据中心中汲取更多价值,重构数据中心内存/存储层次结构。不同于传统的DRAM,英特尔® 傲腾™ 持久内存集大容量、经济性和持久性于一身,能够支持数据中心多个应用场景。浪潮基于英特尔® 傲腾™ 持久内存做了大量的应用场景解决方案,覆盖大数据分析、数据库、云与虚拟化、分布式存储等应用场景。为了帮助用户通过更加灵活的架构来实现创新型的应用,助力企业实现性能突破,浪潮发布了基于英特尔® 傲腾™ 持久内存技术的Cassandra应用方案。
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将Cassandra开源,此后,由于Cassandra良好的可扩展性和性能,广泛应用于消息、订单查询、网站等互联网在线应用场景中,成为了一种流行的分布式结构化数据存储方案。经过在社区使用过程中的不断优化,Cassandra正在变得越来越好,在数据库排行榜“DB-Engines Ranking”中,Cassandra已经在NoSql数据库领域中已经排名第一位。
Cassandra本身具有非常高的写入性能,而且支持并发查询的能力也很好,目前已经有越来越多的用户使用Cassandra构建他们的实时计算系统,但是用户在构建实时计算系统的过程中发现,在部分业务场景中Cassandra仍然无法满足高并发写入、毫秒级响应的需求,比如在车联网行业,数十亿的数据量下分页查询、车辆历史轨迹查询要达到毫秒级响应。浪潮为了帮助企业用户化解对于Cassandra数据库高并发写入及低延时响应的苛刻需求,浪潮进行了基于英特尔® 傲腾™ 持久内存技术的 Cassandra性能优化实践,通过将英特尔® 傲腾™ 持久内存作为Cassandra数据库的持久性存储,相比于传统方案,不仅大幅的提升了数据库在高并发下的写入和查询能力,而且大幅的降低了延迟。
利用英特尔® 傲腾™持久内存技术化解用户的苛刻需求
图1是开源Apache Cassandra数据库的数据读写流程,Cassandra数据库的内存结构及读写流程非常的复杂。Cassandra的内存结构主要由Memtable、KeyCache、RowCache等构成。当客户端发起写操作时,Cassandra首先会将数据写入Commit Log中,然后再写入内存Memtable,当Memtable写满之后,会将数据flush到硬盘的SSTable数据文件中,Commit Log通常会放在SSD上,受限于SSD的性能会严重影响Cassandra的写入性能。当客户端发起读请求时,流程更加的复杂,为了找到数据存储在何处,需要在好几个阶段处理数据,从Memtable开始,到SSTables结束,而且Cassandra数据库的Compaction策略会严重的影响读的性能。
图1
为了解决此问题, 英特尔工程师团队对Cassandra数据库的内存结构进行了简化,利用英特尔® 傲腾™ 持久内存在App Direct 模式下高性能低延迟的特性,应用程序直接访问持久内存,大幅提升Cassandra数据库在高并发下的性能表现。
图2
英特尔® 傲腾™ 持久内存是一种全新的内存类型,不同于传统的DRAM,其集大容量、经济性和持久性于一身,读写带宽比NVME设备高数倍,并大幅降低延时问题。由于写入方式不同,英特尔® 傲腾™ 持久内存也比Flash NAND更耐用,并通过高达512GB的单模块容量,实现了远超传统 DRAM 的系统内存容量。其从根本上改变了数据中心的弹性,将内存数据库重启时间从以前的几天、几小时缩短到现在的几分钟甚至几秒钟,并提供经济实惠的内存空间,将系统内存容量扩展到前所未有的水平。
英特尔® 傲腾™ 持久内存拥有两种特殊的运行模式——App Direct 模式和内存模式。具体来看,采用App Direct 模式,经过专门调试的应用程序可以从产品固有的持久性中充分获取价值,同时获得更大的容量;在内存模式下,在受支持的操作系统或虚拟环境中运行的应用程序可将该产品用于易失性存储,在无需重写软件的情况下,有效利用高达512GB的内存模块带来的附加系统容量,在大型内存池中获得新的洞察。
在实际的方案部署中,浪潮使用了英特尔® 至强® 第二代可扩展处理器与英特尔® 傲腾™ 持久内存组成强强组合,简化Cassandra数据库内存结构,充分利用英特尔® 傲腾™ 持久内存性能优势,以满足用户苛刻的性能需求。
方案验证:英特尔® 傲腾™ 内存性能优势显著
为了测试英特尔® 傲腾™ 持久内存作为Cassandra数据库的存储性能,浪潮决定在存储容量近似的情况下,分别测试基于英特尔® 傲腾™ 持久内存/英特尔®SSD P4510两种配置下的性能对比。
在实际测试中,浪潮将英特尔® 傲腾™ 持久内存设置为 App Direct运行模式,测试使用2台服务器,其中,一台服务器用于Cassandra数据库节点,另外一台服务器作为客户端节点。在本次测试中,浪潮使用了 100%Read、80%Read20%Insert、 50%Read50%Insert三个模型分别来评测Cassandra在英特尔® 傲腾™ 持久内存和英特尔®SSD P4510下的读写性能。
浪潮分别测试了两种配置在不同线程下的P99延时以及吞吐量(测试结果如表2-表5)。
英特尔® 傲腾™ 持久内存吞吐量
英特尔® NAND SSD吞吐量
英特尔® 傲腾™ 持久内存P99延时
英特尔® NAND SSD P99延时
表2-表5
从测试结果我们看到,在三种测试模型下,英特尔® 傲腾™ 持久内存配置的P99延时和吞吐量在高并发下有了大幅的提升。
表7
通过表7的对比结果我们看到,100%读取工作负载的吞吐量提升了14.4倍,支持的工作负载(客户端线程数)提升了13.3倍;Mix(80/20)工作负载的吞吐量提升了6.8倍,支持的工作负载(客户端线程数)提升了10倍;Mix(50/50)工作负载的吞吐量提升了4倍,支持的工作负载(客户端线程数)提升了10倍。
效果:大幅提升Cassandra在高并发下的读写性能
从测试结果可以看出,我们使用优化过的Cassandra分支版本(PMEM-Cassandra),利用英特尔® 傲腾™ 持久内存在App Direct 模式下高性能低延迟的特性,应用程序直接访问持久内存,可以大幅提升Cassandra数据库在高并发下的性能表现。浪潮可以帮助企业用户化解对于Cassandra数据库在特定场景中高并发写入及低延时响应的苛刻需求,相比于传统方案,不仅大幅的提升了数据库在高并发下的写入和查询能力,而且大幅的降低了延迟。