关于rust的异步web框架

最近闲来无事,就实践了一把rust的异步web框架。

rust的异步web框架主要有两派:

  • actix-web
  • hyper

actix-web的功能很丰富,而且性能很不错,但是它的route matching是逐个pattern去match,如果route pattern很多,那么性能就会下降很多。

[hyper](hyperium/hyper)是另外一个知名的low-level的web框架,然后很多high-level的web框架构建在它之上,其中最著名的莫过于[warp](github.com/seanmonstar/warp)。可惜跟actix-web一样,它也是逐个pattern去match的,所以pattern数目多,性能也下降得多。

除了warp,我唯一喜欢的就是[routerify](routerify/routerify)了,它的功能很齐全,API、内部设计、文档都做的非常好。最大的亮点在于它使用RegexSet来做pattern match,所以不受限于pattern的数目。

但是routerify的性能有点差,所以我尝试将routerify的核心功能(route matching和error handling)重写,看看结果怎样。

这是我的项目repo:

kingluo/routerify-lite

里面有warp和routerify-lite在很多pattern要去match的benchmark,也有简单hello world的性能测试结果比较。有兴趣的同学可以去看看。

发布于 2021-05-18 14:21