热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于rust:Datenlord-创业公司为什么要选-Rust-做-RDMA-库

RDMA(RemoteDirectMemoryAccess)是近年越来越热门的高速网络传输协定,被广泛应用于超算核心和高端存储畛域,用于缩短网络提早、进步网络带宽。然而RDM

嘉宾:施继成
编辑:李慧文

RDMA(Remote Direct Memory Access)是近年越来越热门的高速网络传输协定,被广泛应用于超算核心和高端存储畛域,用于缩短网络提早、进步网络带宽。然而 RDMA 的 API 接口十分难以使用,且谬误地应用很容易造成程序谬误甚至数据失落。

跨云存储厂商达坦科技(DatenLord)的联结创始人施继成曾在 Google、微软和阿里巴巴等一线大厂从事操作系统和分布式系统的钻研和开发工作,为了更好地专一于本人喜爱的畛域抉择了守业。同时他也是QCon+案例研习社的讲师,将在极客工夫分享他们在 RDMA 中应用 Rust 的教训。InfoQ有幸采访了他,请他来分享在云原生高性能存储平台方面守业的故事和教训。

InfoQ:您为什么抉择了云原生高性能存储平台这个赛道进行守业呢?

施继成:抉择云原生高性能存储的起因是这个畛域还有比拟多问题亟待解决,用户的应用还不太不便和快捷,比方咱们正在专一的跨云存储畛域现有的相干技术还不够成熟和欠缺。同时这些相干技术又很有深度和难度,这样有挑战性且能给用户提供帮忙的事件就十分吸引我。

从市场角度而言,跨云存储的需求量在最近几年将迎来微小的增长:首先越来越多的客户采纳多云或混合云架构,同时云厂商巨头因为商业利益的起因,在跨云场景不足技术革新的动机,这就激发出一片可观又值得进入的跨云市场。当初有一些守业公司在做离线冷数据的跨云迁徙和备份,然而对于热数据的跨云拜访问题还没有成熟的解决方案,这也正是咱们在尝试获得冲破的赛道。

InfoQ:RDMA 高速网络协议被宽泛应用于古代数据中心,它有什么技术痛点呢?

施继成:RDMA 现阶段曾经失去大家的宽泛认可,然而 RDMA 大规模应用的时候还存在一些技术痛点,例如大规模 RDMA 网络的流量管制、RDMA 利用的内存主动治理、如何让 RDMA 适配广域网场景等等。除了这些技术痛点,老手在接触 RDMA 相干技术时还面临着技术门槛高而导致的上手艰难问题,比方出错信息艰涩,进而导致纠错难之类的问题等等。

InfoQ:为什么您的团队抉择了 Rust 做 RDMA 库呢?Rust 有什么外围个性,吸引了您的团队呢?能介绍下您的团队过后选型语言的思考吗?比方横向比照一下 Rust、C、Go 等热门语言,给读者提供一些语言选型参考呢?

施继成:咱们团队抉择 Rust 语言是看好其在高性能根底软件中的发展势头。当然,咱们也思考过其余编程语言,例如 Go 语言和 C/C++ 语言。

Go 语言在云原生畛域具备统治位置,绝大多数的框架和库都是用 Go 语言实现的,然而 Go 语言的性能并不优异,和 C/C++ 这类语言比还有不小差距,而咱们须要提供的是极致性能的存储产品,所以 Go 语言没有成为咱们的次要编程语言。

C/C++ 性能十分好,也是根底零碎最常应用的语言,然而这两门语言在应用上的规约性较少,程序员很容易写出不自知的 Bug,找出这些问题十分费时费力,因而也会影响零碎的稳定性。

相比之下,Rust 语言在内存平安和多线程安全性方面有语言级别的反对,可能大大减少相干谬误产生的概率;而且其零代价高层形象的个性可能同时满足高性能需要和软件高级别形象的需要。

Rust 语言在我看来就是新时代的 C 语言。连 Linux 内核都开始尝试接管 Rust 语言作为第二门官网编程语言,可见其在根底底层软件开发上的受欢迎水平。

在理论我的项目中语言仅仅是工具,抉择更多的是看需要,例如在容器畛域 K8s 占据了主导地位,那么 Go 语言就非常适合在这个场景下开发,起因是四周的其余的库也都是这个语言,成熟的胜利案例也比拟好找,容易学习和开发。所以对开发语言的选型更多是依据应用场景,偏底层的根底软件系统开发适宜用 Rust 或 C,偏下层的应用层适宜用 Go 或 Java。

InfoQ:您的团队通过 Rust 实现了 RDMA API 治理库,是否介绍一下该库的设计思路和实施方案呢?

施继成:咱们实现的 Rust RDMA 库次要解决了以下几个问题:

1.让 Rust 语言间接调用 RDMA 的 API

2.平安且高效地治理 RDMA 的内存资源

3.在底层的 RDMA ibverbs 接口上封装高级的形象层,实现多台机器的内存资源能对立治理。

咱们次要利用了 Rust 语言的所有权机制和援用计数机制,保障了单机内存资源的平安拜访和及时开释;同时咱们利用了 Tokio 异步执行库的劣势封装了异步接口,使得 RDMA 接口能够在 Rust 异步办法中被调用,进步了数据并发传输的效率;最初咱们提供了一套下层接口,不便多台机器治理 RDMA 内存块,缩小因为机器间协同出错造成性能降落的可能性。

InfoQ:在应用 Rust 进行开发时,你们遇到的最大的难题是什么?是如何解决的呢?是否举个例子分享下呢?

施继成:应用 Rust 语言咱们遇到的最大艰难点在于如何扭转思维形式,依照传统的形式去设计程序往往会让 Rust 语言写起来特地苦楚,须要花大量工夫和编译器作奋斗。解决的办法也很间接,就是一直学习其余开源我的项目的教训,并在实践中一直总结经验,依照 Rust 那套“平安”的思路来设计程序,缓缓地就可能比拟顺滑得应用 Rust 语言了。举个例子,咱们最开始应用 Rust 的时候往往解脱不了 C/C++ 中指针传递的习惯,因为这是最便宜和高效的内存共享形式,然而不加节制的内存共享会导致内存拜访的平安问题。因而 Rust 语言禁止这些行为的产生,也导致咱们晚期和编译器进行了不少的“格斗”,最初通过对 Rust 背地设计理念的了解,优化咱们产品设计的同时也进步了开发的效率。

InfoQ:您感觉目前的 Rust,还有哪些亟需攻克的难点呢?

施继成:Rust 语言的上手难度还是比拟大,对于初学者的要求比拟高,学习曲线过于平缓等问题会妨碍一部分爱好者深刻理解的趣味。Rust 语言自身和周边设施也存在一些问题须要解决,其中咱们遇到的一个问题是异步执行器不对立,导致抉择的时候须要“站队”,而同时反对多种异步执行器的库并不多,所以一旦抉择了某个执行器很可能就无奈应用某些很好用的库。这也是 Rust 生态在演化过程中带来的问题,置信随着 Rust 生态越来越成熟欠缺,这些框架不对立的问题会逐渐打消。

现阶段这些问题是整个 Rust 社区独特须要面对的问题,大多也都还没有解决,因而咱们也只能寻找一些折中的解决方案,比方在抉择执行器方面咱们会抉择应用最宽泛的异步执行器。当然咱们也在尝试为社区提供一些解决方案,比方目前还在布局中的异步执行对立库,能够让用户在编译时动静抉择想要应用的异步执行器,而不是在编码层面间接绑定。这些工作还在推动中,当然因为工作量着实不小,还须要不少工夫来推动。InfoQ:作为一家守业公司,应用 Rust 这样较新、受众少的语言,会不会比拟冒险呢?是否也会减少客户的学习老本呢?施继成:这个问题十分好,这确实是有肯定的冒险性,这个冒险性次要在开发过程中,对于用户没有什么影响。Rust 现阶段尽管热度很高,但还算是小众语言,学的人很多,会的人很少,想要找到咱们须要的人才就会绝对艰难一些。不过也有一些“意外”的益处,在咱们的无限接触范畴内发现,但凡对 Rust 语言可能深刻学习理解和应用的工程师,往往在工程和技术层面都有不错的积攒,会比拟合乎达坦科技对技术人员的要求,这可能是 Rust 语言自身高门槛带来的一些“益处”。

InfoQ:在存储外,您感觉还有哪些场景特地适宜 Rust 大展神通呢?

施继成:下面有提到,Linux 零碎曾经在尝试应用 Rust 语言,可见 Rust 语言在操作系统畛域是很有可能大展神通的。除了操作系统,但凡对平安对高性能有高要求的畛域 Rust 也应该有一展拳脚的机会,例如高性能计算和可信计算畛域。其中高性能计算畛域因为对性能的高要求,原先都是底层语言的天下,例如 C/C++,Rust 语言的呈现给出了另外一种可能性。此外,据我所知,Rust 语言在区块链畛域也被宽泛应用。

InfoQ:作为一家守业公司的 CTO,您对新员工有什么期许吗?最看重应聘者的哪些特点呢?

施继成:达坦科技(DatenLord)的招聘策略是少而精,我心愿新员工有以下特质:1. 拥抱开源:因为咱们是国内首家同时开源 RDMA 软硬件解决方案的公司,开源写入了公司的基因。而且那些可能给开源社区踊跃做奉献的程序员往往也更加有主观能动性和创造力,公司也须要这样的人才。2. 根底扎实:守业团队每天都在做十分具备挑战的事件,技术方向上有时也会发生变化,只有根底扎实能力在这些攻坚和方向转变的时候体现良好。3. 积极主动:在以后疫情的影响下,达坦科技(DatenLord)响应政府的号召履行近程办公,这更须要员工有很强的自驱能力。此外,咱们偏向于抉择应用 Rust 的工程师。我感觉可能深刻理解和把握 Rust 语言自身就是一张很好的名片,体现了应聘者优良的学习能力。对达坦科技(DatenLord)而言,会用 Rust 语言也会大大缩短“热身”工夫,能尽快投入我的项目中,也就更受咱们青眼。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
author-avatar
青锋寒万岁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有