首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

“IT中华行”may_minihttp——国人开发的Rust高性能Web框架

初识may_minihttp

有一个给web框架做性能排名的网站,叫techempower,它在前段时间公布了2020年度最新的测试结果——Round19,我看到了后特别激动,因为这次测试的综合成绩的前三名中,有两名都来自中国(以往测试中,前几名都是老外研发的web框架),第一名是我们之前提到过的基于C++的drogon,本次我们来聊一聊基于rust的may_minihttp

综合得分——物理机上的测试结果

综合得分——云服务器上的测试结果

注:techempower有两种测试环境,一个是物理机,一个是云服务器(上面第一张图是物理机的测试结果、第二张图是云服务器的测试结果)

可以看到,在物理机上,may-minihttp是第三名,而在云服务器上,may-minihttp是第二名。

may-minihttp已开源在GitHub上。

may-minihttp的由来

may-minihttp,fork自tokio-minihttp,但用其作者自研的rust协程库——may,进一步封装了tokio-minihttp,在http方面表现出比tokio-minihttp更好的性能;另外,对于数据库的访问层,作者同样用may封装了一个针对PostgreSql数据库的访问层——may_postgres,使得may-minihttp在访问数据库的几项测试中也表现出不俗的成绩。

可以说,may——才是这个项目真正核心的点。

may-minihttp初体验

在简单了解了一下may-minihttp之后,好奇心驱使我赶紧对它试用一番,但很遗憾我连一个可以快速上手的文档都没找到,好在项目提供了examples,我过了一遍examples里面的各种示例,然后发现,may-minihttp其实还是一个完成度不是很高的项目,比如它没有一个好用的路由系统,也没有很方便的http参数校验功能……(截至我写这篇文章时还是如此,但愿后面这些细节会慢慢得到完善),我简单的改了examples的几个地方,让它可以在我的本地电脑跑起来,顺便做了个性能测试,那性能,真的很惊艳,秒杀几乎所有市面上的常用框架啊啊啊。

may-minihttp的遗憾

正如我们上面所说,may——才是这个项目真正核心的点,我们看may这个项目,它至少是3年前就创建了

may在github的代码仓库信息

现在是2020年,往回推三年是2017,那个时候作者就创建了这么厉害的库,真的很佩服,特别是那时候rust还没有原生的异步支持,这个库真的来得正是时候,但后来在2018年,rust从语言层面原生支持了async/await的异步方案,进而社区中出现了一个新的rust异步库——async-std,进而市面上出现了不少基于async-std的rust web框架,性能也非常非常高,并且围绕async-std,正在有越来越多的其它库在对它提供兼容,它的生态也慢慢建立起来了;而may,在生态的建设上相比async-std,还是逊色不少。

may-minihttp的价值

基于以上原因,或许may-minihttp很难成为rust主流的web框架(请注意,我说的是或许),但may这个库,是为数不多的高性能的协程库之一(综合来看包括很多其它的语言及生态,高质量的协程库都不多见),相信很多后来者也会从may里面得到启发,进而创造出更牛X的技术(甚至这个技术不一定是基于rust语言)。

我是这么认为的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200819A0RJ6V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券