Fiber高性能web框架

844 阅读2分钟

关注公粽号:堆栈future

Fiber高性能web框架

Fiber介绍

Fiber是基于使用Go语言编写的最快的HTTP引擎fasthttp构建。旨在通过零内存分配高性能服务,使快速开发更加简便。

关于fasthttp做一个简单的介绍:fasthttp是一款高性能网络请求库。如果我们的服务需要每秒处理数千个请求,并且需要一致的低毫秒响应时间,那么fasthttp是最佳选择。否则对于大多数情况来说,net/http更好,因为它更易于使用并且可以处理更多情况,比如gin框架底层网络请求就是用net/http实现的。同时这也从侧面说明,Fiber的请求与Gin在处理requestresponse上是不兼容的。

实例

package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/"func(c *fiber.Ctx) error {
        return c.SendString("Hello, World 👋!")
    })

    app.Listen(":3000")
}

我们可以看到创建一个服务实例是非常简单的,使用中间件也是和Gin框架类似,只需要用Use注册即可。比如:

func main() {
    app := fiber.New()

    // Match any route
    app.Use(func(c *fiber.Ctx) error { // 全局中间件 所有请求都会进入
        fmt.Println("🥇 First handler")
        return c.Next()
    })

    // Match all routes starting with /api
    app.Use("/api"func(c *fiber.Ctx) error { // /api中间件 只有api前缀的才可以进入
        fmt.Println("🥈 Second handler")
        return c.Next()
    })

    // GET /api/register
    app.Get("/api/list"func(c *fiber.Ctx) error {
        fmt.Println("🥉 Last handler")
        return c.SendString("Hello, World 👋!")
    })

    log.Fatal(app.Listen(":3000"))
}

基准测试

上图可以看出Fiber每秒处理请求数达到惊人的35万次,而fasthttp也是这个上限,它俩不相上下。可以看到Gin框架大概在5万/秒,差距不是一般的大。

上图可以看出Fiber分配内存更快,几乎在60ms以内就可以完成,速度相当惊人。

特点

  • 强大的路由
  • 静态文件服务
  • 极限性能
  • 低内存占用
  • API接口
  • 中间件和Next支持
  • 快速服务器端编程
  • 模版引擎
  • WebSocket支持
  • 频率限制
  • 15种语言

限制

  • 由于Fiber使用了unsafe特性,导致其可能与最新的Go版本不兼容。Fiber 2.18.0已经在Go1.141.17上验证过。
  • Fibernet/http接口不兼容。这意味着你无法使用gqlengo-swagger或者任何其他属于 net/http生态的项目。

总结

推荐大家使用Fiber去构建自己的高性能web微服务,尤其是高并发处理大量请求领域优先使用。Fiber目前已经很成熟了,具体大家可以参考官网:

learnku.com/docs/gofibe…