文章插图
作者 | 火尉子
责编 | Carol
封图 | CSDN 下载自视觉中国
在各行各业数字化转型深入的当下,数据呈爆炸式增长 。面对海量数据的存储需求,分布式存储显然在架构上有着天然优势,但在这波数据洪流之中也面临着性能上的全新挑战 。
由于分布式存储的工作原理是将各个存储节点使用网络互联的方式构建为集群,向外部提供更加可靠的高性能服务,因此可以说分布式存储本质上是一种网络存储,其性能在很大程度上受网络的影响 。
在高性能的分布式存储中,使用传统的TCP网络进行各存储节点之间的网络互联很容易形成网络瓶颈,而在分布式存储最容易让用户诟病的IO延时方面,网络部分的开销是不可忽视的一部分 。
随着网络带宽的高速增长,在软件上的消耗已成为网络性能的瓶颈,而通过绕过CPU实现高性能传输的RDMA网络成为分布式存储不错的选择 。
RDMA(Remote Direct Memory Access),可以简单理解为网卡完全绕过CPU实现两个服务器之间的内存数据交换 。其作为一种硬件实现的网络传输技术,可以大幅提升网络传输效率,帮助网络IO密集的业务(比如分布式存储、分布式数据库等)获得更低的时延以及更高的吞吐 。
最初的RDMA是实现在IB(Infiniband)上,由于其新的硬件技术栈成本比较高,主要用于HPC(高性能计算)等少数场景 。而新的技术发展下,能够实现在以太网上使用RDMA 。
当前RDMA在以太网上的传输协议是RoCEv2,RoCEv2是基于无连接协议的UDP协议,相比面向连接的TCP协议,UDP协议更加快速、占用CPU资源更少,但其不像TCP协议那样有滑动窗口、确认应答等机制来实现可靠传输,一旦出现丢包,依靠上层应用检查到了再做重传,会大大降低RDMA的传输效率 。
所以要想发挥出RDMA真正的性能,突破数据中心大规模分布式系统的网络性能瓶颈,势必要为RDMA搭建一套不丢包的无损网络环境,而实现不丢包的关键就是解决网络拥塞 。在解决拥塞问题的关键在支持ECN等特性的交换机,而这个技术在一般的交换机都普遍支持 。
既然RDMA是一个硬件技术方案,而且在分布式存储中又能快速地解决网络高延时等相关问题,是不是直接更换上这个新的硬件技术就能万事大吉?实际可能并没有那么简单,那么我们就来简单聊聊RDMA技术实践过程中踩过的坑 。
文章插图
RDMA想说爱你却不容易
- RDMA的使用需要应用程序的代码配合(RDMA编程) 。
并且在编程方式上RDMA编程是异步的,而原始的Socket编程是同步的 。这样将导致对大多数开发者来说,无论是改造原有应用程序适配RDMA,还是写一个全新的RDMA原生应用程序,都不容易 。
那么如果完成了RDMA对接,是否就能使我们的程序获得高性能呢?我们再看看在通信模块中对接完RDMA的对比性能测试 。
- RDMA在RPC模块中使用
文章插图
图1 RPC TCP与RDMA性能对比测试
(测试说明:使用同一张10Gb网卡,采用不同的模式进行对比测试)
通过测试我们发现RDMA的方式具有明显的优势,尤其在低深度的场景下能获得更好的性能 。我们继续将RPC对接实际业务进行了测试,在这里我们对接了一个基于RAFT一致性协议的多副本数据存储业务,测试结果参见下图:
文章插图
图2 对接实际业务后的性能对比测试
从上面的测试结果看到,在包含有实际业务的测试中,RDMA的表现并没有原始的RDMA测试表现那么优异,我们分析了其主要原因是线程切换、数据复制等操作以及IO路径上其它模块引入了额外的开销 。
推荐阅读
- 茶叶买回家该怎么存储,储存白毛猴茶的常见方法
- 常见分布式锁实现方式
- eBay PB 级日志系统的存储方案实践
- 浅谈汇编器、编译器和解释器
- 聊一聊SQL Server中存储过程和函数的区别
- 存储中普洱茶的变化,普洱茶的燥感之迷
- 科学家成功操纵“暗态”量子态,量子位存储时间提升500倍
- 玳玳花茶相关知识,玳玳花茶存储方式
- 分布式数据库调优实践
- 玳玳花茶存储方式,玳玳花茶冲泡方法