|
|
# nnet 网络库 - 需求提炼文档
|
|
|
|
|
|
## 一、需求分类与提炼
|
|
|
|
|
|
### 1. 协议支持需求
|
|
|
|
|
|
#### 1.1 基础协议
|
|
|
- ✅ TCP协议支持
|
|
|
- ✅ UDP协议支持
|
|
|
- ✅ WebSocket协议支持
|
|
|
- ✅ Unix Domain Socket支持
|
|
|
|
|
|
#### 1.2 安全协议
|
|
|
- ✅ TLS/SSL支持(支持TLS 1.2、1.3等版本)
|
|
|
- ✅ 证书管理(支持证书加载、验证)
|
|
|
|
|
|
#### 1.3 扩展协议
|
|
|
- ✅ 串口通信支持(Serial Port)
|
|
|
- ✅ 命名管道支持(Named Pipe,可选)
|
|
|
- ✅ 其他gnet不支持的协议扩展机制
|
|
|
|
|
|
#### 1.4 协议抽象
|
|
|
- ✅ 统一的协议接口
|
|
|
- ✅ 协议注册机制
|
|
|
- ✅ 协议自动识别
|
|
|
|
|
|
### 2. 协议版本管理需求
|
|
|
|
|
|
#### 2.1 多版本支持
|
|
|
- ✅ 单协议多版本支持
|
|
|
- ✅ 版本自动识别
|
|
|
- ✅ 版本手动指定
|
|
|
- ✅ 版本协商机制
|
|
|
|
|
|
#### 2.2 版本识别方式
|
|
|
- ✅ **协议头识别**:通过固定位置的版本字段识别
|
|
|
- ✅ **消息头识别**:通过消息头中的版本信息识别
|
|
|
- ✅ **消息体识别**:通过特定消息(如设备注册消息)中的软件版本号、硬件版本号等字段识别
|
|
|
- ✅ **用户自定义识别**:支持用户自定义版本识别逻辑
|
|
|
|
|
|
#### 2.3 版本持久化
|
|
|
- ✅ 版本信息与连接绑定
|
|
|
- ✅ 重连后版本信息保持(通过连接标识或Session)
|
|
|
- ✅ 版本信息查询
|
|
|
|
|
|
#### 2.4 版本选择策略
|
|
|
- ✅ 自动识别优先
|
|
|
- ✅ 手动指定覆盖
|
|
|
- ✅ 版本不匹配处理
|
|
|
|
|
|
### 3. 路由系统需求(重新设计)
|
|
|
|
|
|
#### 3.1 路由匹配策略(高度可扩展)
|
|
|
- ✅ **基于URL/String匹配**:传统的字符串路由匹配(如:"/user/login")
|
|
|
- ✅ **基于协议帧头匹配**:通过协议帧头的特定字段进行路由匹配(如:消息类型、命令码等)
|
|
|
- ✅ **基于协议帧数据匹配**:通过协议帧数据内容的某部分进行路由匹配(如:消息体中的字段值)
|
|
|
- ✅ **组合匹配**:支持多种匹配策略组合使用
|
|
|
- ✅ **自定义匹配器**:支持用户自定义匹配逻辑
|
|
|
|
|
|
#### 3.2 路由分组
|
|
|
- ✅ 功能模块分组
|
|
|
- ✅ 权限分组
|
|
|
- ✅ 嵌套分组
|
|
|
- ✅ 分组级别的中间件绑定
|
|
|
- ✅ 分组可绑定匹配策略
|
|
|
|
|
|
#### 3.3 函数集式路由
|
|
|
- ✅ 多个处理函数组合
|
|
|
- ✅ 路由级别的中间件
|
|
|
- ✅ 路由级别的协议版本限制
|
|
|
|
|
|
#### 3.4 路由优先级
|
|
|
- ✅ 路由优先级设置
|
|
|
- ✅ 精确匹配优先于通配符
|
|
|
- ✅ 帧头匹配优先于帧数据匹配
|
|
|
|
|
|
### 4. 中间件系统需求
|
|
|
|
|
|
#### 4.1 中间件类型
|
|
|
- ✅ **全局中间件**:所有请求执行
|
|
|
- ✅ **路由级中间件**:特定路由执行
|
|
|
- ✅ **分组级中间件**:路由组执行
|
|
|
|
|
|
#### 4.2 中间件功能
|
|
|
- ✅ 前置中间件(Before)
|
|
|
- ✅ 后置中间件(After)
|
|
|
- ✅ 错误处理中间件(Error)
|
|
|
- ✅ 认证中间件(Auth)
|
|
|
- ✅ 限流中间件(RateLimit)
|
|
|
- ✅ 日志中间件(Logging)
|
|
|
|
|
|
#### 4.3 中间件链
|
|
|
- ✅ 中间件执行顺序控制
|
|
|
- ✅ 中间件中断机制
|
|
|
- ✅ 中间件参数传递
|
|
|
|
|
|
### 5. 数据拦截器需求
|
|
|
|
|
|
#### 5.1 拦截器链(责任链模式)
|
|
|
- ✅ 多个拦截器顺序执行
|
|
|
- ✅ 拦截器中断机制
|
|
|
- ✅ 拦截器条件执行
|
|
|
|
|
|
#### 5.2 拦截点
|
|
|
- ✅ **接收拦截**:数据接收后、解析前
|
|
|
- ✅ **解析拦截**:数据解析后、路由前
|
|
|
- ✅ **路由拦截**:路由匹配后、处理前
|
|
|
- ✅ **处理拦截**:业务处理中
|
|
|
- ✅ **响应拦截**:响应生成后、发送前
|
|
|
|
|
|
#### 5.3 拦截器功能
|
|
|
- ✅ 数据验证
|
|
|
- ✅ 数据转换
|
|
|
- ✅ 数据加密/解密
|
|
|
- ✅ 数据压缩/解压
|
|
|
- ✅ 数据统计
|
|
|
|
|
|
### 6. 编解码与序列化需求
|
|
|
|
|
|
#### 6.1 编解码器
|
|
|
- ✅ 编码器接口(Encoder)
|
|
|
- ✅ 解码器接口(Decoder)
|
|
|
- ✅ 协议级别编解码器
|
|
|
- ✅ 消息级别编解码器
|
|
|
|
|
|
#### 6.2 序列化格式
|
|
|
- ✅ JSON序列化
|
|
|
- ✅ Protobuf序列化(可选)
|
|
|
- ✅ MessagePack序列化(可选)
|
|
|
- ✅ Binary序列化
|
|
|
- ✅ 自定义序列化器
|
|
|
|
|
|
#### 6.3 序列化功能
|
|
|
- ✅ 结构体到字节流
|
|
|
- ✅ 字节流到结构体
|
|
|
- ✅ 序列化器注册
|
|
|
- ✅ 序列化器选择
|
|
|
|
|
|
### 7. 粘包拆包处理需求
|
|
|
|
|
|
#### 7.1 内置协议支持
|
|
|
- ✅ **固定长度协议**:固定长度的消息
|
|
|
- ✅ **长度字段协议**:消息前N字节表示长度(支持大端/小端)
|
|
|
- ✅ **分隔符协议**:通过分隔符区分消息
|
|
|
- ✅ **自定义帧头协议**:通过帧头识别消息边界
|
|
|
|
|
|
#### 7.2 自定义处理
|
|
|
- ✅ 用户自定义粘包拆包逻辑
|
|
|
- ✅ 多协议混合使用(通过协议识别器区分)
|
|
|
- ✅ 协议级别的Unpacker配置
|
|
|
|
|
|
### 8. 内置nnet协议需求
|
|
|
|
|
|
#### 8.1 协议特点
|
|
|
- ✅ 简单高效(最小化协议开销)
|
|
|
- ✅ 功能强大(满足游戏服务器、物联网等场景)
|
|
|
- ✅ 可扩展(支持协议版本升级)
|
|
|
|
|
|
#### 8.2 协议功能
|
|
|
- ✅ 消息类型区分(请求/响应/推送)
|
|
|
- ✅ 消息ID支持(请求-响应匹配)
|
|
|
- ✅ 压缩支持(可选)
|
|
|
- ✅ 加密支持(可选)
|
|
|
- ✅ 校验和(可选)
|
|
|
|
|
|
### 9. 连接管理需求
|
|
|
|
|
|
#### 9.1 连接生命周期
|
|
|
- ✅ 连接建立
|
|
|
- ✅ 连接保持
|
|
|
- ✅ 连接关闭
|
|
|
- ✅ 连接超时检测
|
|
|
|
|
|
#### 9.2 连接操作
|
|
|
- ✅ 读取连接数据
|
|
|
- ✅ 写入连接数据
|
|
|
- ✅ 关闭连接
|
|
|
- ✅ 获取连接信息(IP、端口、协议版本等)
|
|
|
- ✅ **跨连接操作**:在A连接的处理中操作B连接
|
|
|
|
|
|
#### 9.3 连接分组
|
|
|
- ✅ **服务端控制分组**:服务端主动将连接加入/移出分组
|
|
|
- ✅ **消息控制分组**:通过消息内容(如用户ID、设备类型)自动分组
|
|
|
- ✅ 分组内广播消息
|
|
|
- ✅ 分组查询(查询分组内的连接列表)
|
|
|
|
|
|
#### 9.4 连接标识
|
|
|
- ✅ 连接ID(唯一标识)
|
|
|
- ✅ 连接标签(支持给连接打标签,便于查询和分组)
|
|
|
|
|
|
### 10. Session管理需求
|
|
|
|
|
|
#### 10.1 Session职责(重要)
|
|
|
- ✅ **仅作为数据存储**:Session只负责存储键值对数据
|
|
|
- ✅ **不负责广播**:广播功能由连接管理器实现
|
|
|
- ✅ **职责分离**:Session与连接管理解耦
|
|
|
|
|
|
#### 10.2 Session存储策略
|
|
|
- ✅ **内存存储(Memory)**:默认实现,高性能(默认使用)
|
|
|
- ✅ **文件存储(File)**:持久化到本地文件
|
|
|
- ✅ **Redis存储**:分布式Session支持
|
|
|
- ✅ **自定义存储**:用户可实现自定义存储策略
|
|
|
|
|
|
#### 10.3 Session操作
|
|
|
- ✅ 创建Session
|
|
|
- ✅ 获取Session
|
|
|
- ✅ 更新Session
|
|
|
- ✅ 删除Session
|
|
|
- ✅ Session过期管理
|
|
|
|
|
|
#### 10.4 Session与连接关联
|
|
|
- ✅ 连接可获取关联的Session
|
|
|
- ✅ Session可获取关联的连接(通过连接管理器)
|
|
|
- ✅ 支持一个Session关联多个连接(如多设备登录)
|
|
|
|
|
|
### 11. Context系统需求
|
|
|
|
|
|
#### 11.1 Context类型
|
|
|
- ✅ 请求上下文(包含请求相关信息)
|
|
|
- ✅ 连接上下文(包含连接相关信息)
|
|
|
- ✅ 用户上下文(包含用户相关信息)
|
|
|
- ✅ 协议上下文(包含协议版本、编解码器等信息)
|
|
|
|
|
|
#### 11.2 Context功能
|
|
|
- ✅ Context值设置和获取
|
|
|
- ✅ Context在中间件、拦截器、处理器之间传递
|
|
|
- ✅ Context超时和取消
|
|
|
- ✅ 用户自定义Context字段
|
|
|
|
|
|
### 12. 配置管理需求
|
|
|
|
|
|
#### 12.1 配置来源
|
|
|
- ✅ 配置文件(JSON、YAML、TOML等格式)
|
|
|
- ✅ 环境变量
|
|
|
- ✅ 代码配置
|
|
|
- ✅ 配置优先级:代码配置 > 环境变量 > 配置文件 > 默认值
|
|
|
|
|
|
#### 12.2 配置项
|
|
|
- ✅ 服务器配置(监听地址、端口、协议类型等)
|
|
|
- ✅ 性能配置(连接数限制、缓冲区大小、超时时间等)
|
|
|
- ✅ 协议配置(协议版本、编解码器选择等)
|
|
|
- ✅ 中间件配置(中间件的启用/禁用、参数配置)
|
|
|
- ✅ Session配置(存储策略、过期时间等)
|
|
|
- ✅ 日志配置(日志级别、输出格式等)
|
|
|
- ✅ Metrics配置(监控指标配置)
|
|
|
|
|
|
### 13. 日志系统需求
|
|
|
|
|
|
#### 13.1 日志接口(日志门面)
|
|
|
- ✅ 统一的日志接口
|
|
|
- ✅ 日志级别(Debug、Info、Warn、Error、Fatal)
|
|
|
- ✅ 结构化日志
|
|
|
- ✅ 日志字段(Fields)
|
|
|
|
|
|
#### 13.2 默认实现
|
|
|
- ✅ 使用Go标准库log实现
|
|
|
- ✅ 日志输出到控制台、文件
|
|
|
|
|
|
#### 13.3 第三方集成
|
|
|
- ✅ logrus集成
|
|
|
- ✅ zap集成
|
|
|
- ✅ zerolog集成
|
|
|
- ✅ 用户自定义日志实现
|
|
|
|
|
|
#### 13.4 日志配置
|
|
|
- ✅ 日志级别控制
|
|
|
- ✅ 日志格式配置
|
|
|
- ✅ 日志轮转配置
|
|
|
|
|
|
### 14. 指标监控需求
|
|
|
|
|
|
#### 14.1 监控协议
|
|
|
- ✅ **Prometheus格式**:仅支持Prometheus格式(业内最流行)
|
|
|
|
|
|
#### 14.2 监控指标
|
|
|
- ✅ 连接数(当前连接数、总连接数、连接建立速率)
|
|
|
- ✅ 请求数(请求总数、请求速率、请求耗时分布)
|
|
|
- ✅ 错误数(错误总数、错误率、错误类型分布)
|
|
|
- ✅ 流量(接收字节数、发送字节数、流量速率)
|
|
|
- ✅ 协议统计(各协议版本的请求数、错误数)
|
|
|
|
|
|
#### 14.3 指标导出
|
|
|
- ✅ HTTP端点导出(/metrics)
|
|
|
- ✅ 推送到监控系统(可选)
|
|
|
- ✅ 自定义指标
|
|
|
|
|
|
### 15. 插件系统需求
|
|
|
|
|
|
#### 15.1 插件接口
|
|
|
- ✅ 标准的插件接口
|
|
|
- ✅ 插件生命周期(初始化、启动、停止、销毁)
|
|
|
|
|
|
#### 15.2 插件类型
|
|
|
- ✅ **协议插件**:扩展新的协议支持
|
|
|
- ✅ **中间件插件**:提供可复用的中间件
|
|
|
- ✅ **编解码插件**:提供新的编解码器
|
|
|
- ✅ **存储插件**:提供新的Session存储实现
|
|
|
- ✅ **监控插件**:扩展监控功能
|
|
|
- ✅ **工具插件**:提供开发工具和辅助功能
|
|
|
|
|
|
#### 15.3 插件管理
|
|
|
- ✅ 插件注册
|
|
|
- ✅ 插件加载(支持动态加载)
|
|
|
- ✅ 插件卸载
|
|
|
- ✅ 插件依赖管理
|
|
|
|
|
|
#### 15.4 插件应用场景示例
|
|
|
- ✅ **协议转换插件**:将HTTP协议转换为内部协议
|
|
|
- ✅ **数据统计插件**:统计特定业务数据
|
|
|
- ✅ **消息队列插件**:将消息推送到消息队列
|
|
|
- ✅ **缓存插件**:提供缓存功能
|
|
|
- ✅ **限流插件**:提供限流功能
|
|
|
|
|
|
### 16. 生命周期管理需求
|
|
|
|
|
|
#### 16.1 Server生命周期阶段
|
|
|
- ✅ **初始化(Init)**:配置加载、组件初始化
|
|
|
- ✅ **启动前(BeforeStart)**:启动前的准备工作
|
|
|
- ✅ **启动(Start)**:服务启动,开始监听
|
|
|
- ✅ **运行中(Running)**:服务正常运行
|
|
|
- ✅ **停止前(BeforeStop)**:停止前的清理工作
|
|
|
- ✅ **停止(Stop)**:服务停止,停止监听
|
|
|
- ✅ **销毁(Destroy)**:资源释放
|
|
|
|
|
|
#### 16.2 Connection生命周期阶段
|
|
|
- ✅ **连接建立(OnOpen)**:连接建立时触发
|
|
|
- ✅ **数据接收(OnTraffic)**:数据到达时触发
|
|
|
- ✅ **连接关闭(OnClose)**:连接关闭时触发
|
|
|
- ✅ **连接错误(OnError)**:连接错误时触发
|
|
|
|
|
|
#### 16.3 生命周期钩子
|
|
|
- ✅ 在每个阶段注册钩子函数
|
|
|
- ✅ 钩子函数的执行顺序控制
|
|
|
- ✅ 钩子函数的错误处理
|
|
|
|
|
|
#### 16.4 优雅关闭
|
|
|
- ✅ 优雅关闭(Graceful Shutdown)
|
|
|
- ✅ 等待正在处理的请求完成
|
|
|
- ✅ 关闭空闲连接
|
|
|
- ✅ 资源清理
|
|
|
|
|
|
### 17. 客户端支持需求
|
|
|
|
|
|
#### 17.1 内置nnet客户端
|
|
|
- ✅ 支持TCP、UDP、WebSocket等协议连接
|
|
|
- ✅ 支持TLS连接
|
|
|
- ✅ 支持协议版本协商
|
|
|
- ✅ 支持自动重连
|
|
|
- ✅ 支持连接池
|
|
|
|
|
|
#### 17.2 客户端功能
|
|
|
- ✅ 请求-响应模式(同步/异步)
|
|
|
- ✅ 异步消息推送
|
|
|
- ✅ 连接状态管理
|
|
|
- ✅ 超时控制
|
|
|
- ✅ 错误处理
|
|
|
|
|
|
### 18. 健康检查需求
|
|
|
|
|
|
#### 18.1 健康检查接口
|
|
|
- ✅ 提供简单的HTTP健康检查接口(/health)
|
|
|
- ✅ 返回服务状态(健康/不健康)
|
|
|
- ✅ 可扩展健康检查逻辑
|
|
|
|
|
|
#### 18.2 健康检查内容
|
|
|
- ✅ 服务运行状态
|
|
|
- ✅ 连接数统计
|
|
|
- ✅ 资源使用情况(可选)
|
|
|
|
|
|
### 19. Shell连接支持需求(低优先级)
|
|
|
|
|
|
#### 19.1 Shell连接功能
|
|
|
- ✅ 支持Shell连接建立
|
|
|
- ✅ 支持Shell命令执行
|
|
|
- ✅ 支持子进程管理
|
|
|
- ✅ 支持数据传输
|
|
|
- ✅ 支持连接控制
|
|
|
|
|
|
#### 19.2 应用场景
|
|
|
- ✅ 远程命令执行
|
|
|
- ✅ 系统管理
|
|
|
- ✅ 调试工具
|
|
|
|
|
|
### 20. 测试需求
|
|
|
|
|
|
#### 20.1 测试类型
|
|
|
- ✅ 单元测试(各模块的单元测试)
|
|
|
- ✅ 集成测试(模块间的集成测试)
|
|
|
- ✅ 性能测试(压力测试、性能基准测试)
|
|
|
|
|
|
#### 20.2 测试工具
|
|
|
- ✅ 测试辅助工具
|
|
|
- ✅ Mock对象
|
|
|
- ✅ 测试覆盖率统计
|
|
|
|
|
|
#### 20.3 测试覆盖率
|
|
|
- ✅ **测试覆盖率目标:80%+**
|
|
|
|
|
|
### 21. 代码质量需求
|
|
|
|
|
|
#### 21.1 性能要求
|
|
|
- ✅ 充分利用gnet的事件驱动模型
|
|
|
- ✅ 减少内存分配和GC压力
|
|
|
- ✅ 支持连接池和对象池
|
|
|
- ✅ 高性能的序列化/反序列化
|
|
|
|
|
|
#### 21.2 可扩展性
|
|
|
- ✅ 模块化设计,低耦合高内聚
|
|
|
- ✅ 接口驱动,便于扩展
|
|
|
- ✅ 插件化架构,支持功能扩展
|
|
|
|
|
|
#### 21.3 可维护性
|
|
|
- ✅ 代码简洁清晰
|
|
|
- ✅ 充分的注释和文档
|
|
|
- ✅ 遵循Go代码规范
|
|
|
|
|
|
#### 21.4 依赖管理
|
|
|
- ✅ 最小化外部依赖
|
|
|
- ✅ 核心功能不依赖第三方库
|
|
|
- ✅ 可选功能通过接口隔离,支持可选依赖
|
|
|
|
|
|
#### 21.5 新特性使用
|
|
|
- ✅ 充分利用Golang 1.25.4新特性
|
|
|
- ✅ 充分利用gnet 2.9.5新特性
|
|
|
|
|
|
## 二、需求优先级
|
|
|
|
|
|
### P0 - 核心功能(必须实现)
|
|
|
1. TCP协议支持
|
|
|
2. 基础路由系统(支持字符串匹配)
|
|
|
3. 基础中间件系统
|
|
|
4. 连接管理(基础功能)
|
|
|
5. 基础配置管理
|
|
|
6. 基础日志系统
|
|
|
7. 协议版本管理(核心需求,包括无帧头协议支持)
|
|
|
8. 编解码系统
|
|
|
9. 粘包拆包处理
|
|
|
10. 健康检查接口
|
|
|
|
|
|
### P1 - 重要功能(应该实现)
|
|
|
1. Session管理(默认内存存储)
|
|
|
2. 拦截器系统
|
|
|
3. 连接分组
|
|
|
4. UDP、WebSocket协议支持
|
|
|
5. 内置nnet协议
|
|
|
6. Context系统
|
|
|
7. TLS支持
|
|
|
8. 路由系统扩展(帧头匹配、帧数据匹配)
|
|
|
9. 内置nnet客户端
|
|
|
10. 生命周期管理(Server + Connection)
|
|
|
|
|
|
### P2 - 扩展功能(建议实现)
|
|
|
1. 插件系统
|
|
|
2. Metrics监控(Prometheus格式)
|
|
|
3. Unix Domain Socket支持
|
|
|
4. 高级配置功能
|
|
|
5. 序列化格式扩展
|
|
|
6. 测试完善(覆盖率80%+)
|
|
|
|
|
|
### P3 - 可选功能(按需实现)
|
|
|
1. 串口等扩展协议
|
|
|
2. 性能优化工具
|
|
|
3. 开发工具插件
|
|
|
4. Shell连接支持(低优先级)
|
|
|
|
|
|
## 三、特殊需求说明
|
|
|
|
|
|
### 3.1 单协议多版本识别
|
|
|
- **需求背景**:在实际开发中,某些协议由于历史原因,未在协议头设计版本字段,但可能在特定消息体(如设备注册消息)中包含软件版本号、硬件版本号等信息
|
|
|
- **特殊场景**:有些自定义协议没有帧头、帧内容区分,版本识别策略需要考虑这种场景
|
|
|
- **解决方案**:
|
|
|
1. 支持通过协议头、消息头识别版本(适用于有帧头的协议)
|
|
|
2. 支持通过特定消息的消息体内容识别版本
|
|
|
3. 支持通过消息内容特征识别版本(适用于无帧头/帧内容区分的协议):
|
|
|
- 通过消息内容的特征识别(如:特定字段的位置、值)
|
|
|
- 通过消息长度识别
|
|
|
- 通过消息格式识别(如:JSON结构、字段名等)
|
|
|
- 通过用户自定义的识别逻辑
|
|
|
4. 版本识别后与连接绑定,重连后无需重新识别(通过连接标识或Session)
|
|
|
|
|
|
### 3.2 Session职责分离
|
|
|
- **需求背景**:Session应该只作为数据存储功能存在,广播功能应该在连接管理器中实现
|
|
|
- **解决方案**:
|
|
|
1. Session接口只提供数据存储功能(Get/Set/Delete)
|
|
|
2. 广播功能在ConnectionManager中实现
|
|
|
3. 连接可以通过ConnectionManager获取其他连接,进而获取其他连接的Session
|
|
|
|
|
|
### 3.3 插件系统作用
|
|
|
- **应用场景**:
|
|
|
1. 协议转换(如HTTP转内部协议)
|
|
|
2. 数据统计和监控
|
|
|
3. 消息队列集成
|
|
|
4. 缓存功能扩展
|
|
|
5. 限流功能扩展
|
|
|
6. 数据同步功能
|
|
|
|
|
|
### 3.4 生命周期管理
|
|
|
- **目的**:确保系统资源的正确初始化和释放
|
|
|
- **应用场景**:
|
|
|
1. 数据库连接初始化
|
|
|
2. 缓存连接初始化
|
|
|
3. 定时任务启动
|
|
|
4. 优雅关闭处理
|
|
|
|
|
|
## 四、参考项目
|
|
|
|
|
|
建议参考以下优秀开源项目的设计:
|
|
|
|
|
|
1. **Gin**:路由设计、中间件系统
|
|
|
2. **Echo**:Context设计、中间件链
|
|
|
3. **Fiber**:性能优化、API设计
|
|
|
4. **gnet**:事件驱动模型、高性能实现
|
|
|
5. **gRPC**:协议设计、编解码
|
|
|
6. **Kratos**:架构设计、插件系统
|
|
|
7. **Go-zero**:配置管理、中间件设计
|
|
|
|
|
|
---
|
|
|
|
|
|
**文档版本**: v1.0
|
|
|
**创建日期**: 2024
|
|
|
**待审核**: 待用户确认
|
|
|
|