golang高性能web框架

作为我的毕业设计,我希望通过这个题目

  • 加深自己对于go语言的理解
  • 检验大学中的学习成果
  • 深入理解web框架
  • 掌握性能优化的技巧
  • 深入理解多线程编程

本项目将主要是基于gin框架进行实现

前期技术调研

  • gin框架

  • fasthttp框架

    net/http gin fasthttp
    框架职责 http请求解析+路由能力 http请求解析+路由能力 http请求解析
    性能优化 原生框架 基于原生框架 使用sync.Pool优化热点资源
    请求模型 一个请求对应一个goroutine 一个请求对应一个goroutine 请求和goroutine不完全对应,采用goroutine池维护处理请求的worker
    http2支持 支持 支持 不支持

web相关知识

http请求方法总览

  • Option:HTTP 的 OPTIONS 方法 用于获取目的资源所支持的通信选项。客户端可以对特定的 URL 使用 OPTIONS 方法,也可以对整站(通过将 URL 设置为“*”)使用该方法。

net/http的服务逻辑

  1. 创建路由,设置相关路径和handler
  2. 创建tcp监听器,http服务serve这个监听器
  3. 获取到连接创建conn对象
  4. 处理这个conn对象