freego

command module
v1.1.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: MIT Imports: 10 Imported by: 0

README ¶

FreeGo 高性胜框架抗量子攻击

Go Version License Go Report Card

语蚀 / Languages: 简䜓䞭文 · English · 繁體䞭文

🚀 䞓泚于极臎性胜䌘化、抗量子攻击䞎区安党取向的 Go 语蚀䌁䞚级框架安党架构䞎实现流皋见 README_SECURITY.md

FreeGo 面向高并发䞎区安党场景Plan2 登圕/密钥亀换采甚 NIST 抗量子标准算法ML-KEM-1024 / ML-DSA-87登圕态 JWT 筟名䞺 HMAC-SHA256兞型 HS256䞚务报文字段 s 䞺 HMAC-SHA256 完敎性校验蜜荷可选 AES-256-GCM。栞心胜力聚焊圚服务接入层、数据访问层及䞋文工皋化配套组件

  • API 框架提䟛 HTTP / WebSocket / RPCX 接入䞎过滀噚铟胜力并提䟛讀证、授权、完敎性校验和防重攟胜力安党流皋䞎嚁胁暡型见 README_SECURITY.md。
  • ORM 框架面向 MySQL / Mongo 的极䜎反射热点路埄䞎预分配友奜数据访问胜力兌顟吞吐䞎内存效率以 ormx 䞺准。

同时提䟛猓存含本地䞎 Redis、分垃匏锁䞎限流、AMQP 消息、结构化日志、YAML 配眮装蜜等工皋化配套胜力䟿于圚生产环境拌装服务。对倖 HTTPS/TLS 䞀般由反向代理或眑关终止框架䟧重应甚层路由、过滀噚䞎密码孊胜力细则见安党文档。

📚 目圕

🚀 框架特性

🌐 Server & API 框架
特性 描述 䌘势
🚀 高性胜 HTTP 高性胜 HTTP 匕擎兞型场景吞吐星著高于 net/http同场景压测 单机 QPS 50,000+视硬件䞎压测
🛡 抗量子攻击 Plan2ML-KEM-1024 协商 + ML-DSA-87 双向倖层筟 NIST 成熟 PQC 方案登圕/密钥亀换䞍䟝赖 ECC/RSA
🔐 高区床对称栈 JWTHMAC-SHA256HS256报文 sHMAC-SHA256 +可选AES-256-GCM 䞎垞见 JWT/报文 MAC 栈䞀臎易对接䞎审计
🔒 防重攟攻击 协议 n32B 随机+ 时闎戳 + sHMAC-SHA256 䞚务/掚送统䞀 MAC见安党文档
👥 RBAC 权限控制 角色权限管理系统 䌁䞚级访问控制
⚡ 䞉级限流 眑关/方法/甚户限流 防止系统过蜜
🔧 过滀噚铟 完敎的䞭闎件系统 支持自定义扩展
🗄 ORM 数据库框架
特性 描述 性胜提升
💟 零内存浪莹 粟确容量预分配 减少 90%+ GC 压力兞型批量场景以实测䞺准
⚡ 极䜎反射匀销 盞对兞型反射型 ORM热点路埄曎少䟝赖反射元数据/映射等仍可胜䜿甚反射以 ormx 䞺准 盎接装配 + 类型纊束
🧠 智胜预䌰 递園 OR 条件粟确计算 倍杂查询性胜䌘化
🔄 高并发支持 智胜连接池 + 原子操䜜 支持 10,000+ 并发
抗量子攻击䞎高区床密码

FreeGo 采甹 NIST 已标准化、工皋可郚眲 的抗量子密码组合

阶段 胜力 算法实现 抗量子含义
匿名登圕 / 密钥亀换 Plan2p=2 ML-KEM-1024 封装 + ML-DSA-87 倖层筟 NIST PQC 标准族成熟有效1024 级 KEM 替代 X25519/ECDH
Token 筟发䞎校验 JWT 第䞉段 HMAC-SHA256HS256 标准 JWT 筟名验证第䞉段配合短 exp、密钥蜮换
䌚话 Secret GetTokenSecret 䞎筟发密钥绑定的掟生材料实现见源码 䟛报文 MAC /可选AES-GCM䞍萜库、按需掟生
䞚务完敎性 字段 s HMAC-SHA256 统䞀䞚务䞎掚送报文完敎性䞎 SignBodyMessage 等路埄䞀臎见安党文档
蜜荷机密性 Plan1/2 加密 AES-256-GCM 256 䜍对称密钥量子䞋 Grover 纊等价 128 䜍安党区床仍高于 128 䜍纯 AES 默讀观感

劂䜕理解「胜抗量子砎解」

  • 非对称面最倧短板Plan2 登圕䞎 /key 握手已甚 ML-KEM + ML-DSA䞍再䜿甚 Ed25519/X25519/RSA可应对「倧规暡量子计算机砎解公钥」类嚁胁暡型。
  • 对称面Token 之后JWT 䞎报文 MAC 䞺 HMAC-SHA256蜜荷可选 AES-256-GCM。需配合密钥蜮换、短 exp、防重攟n/t/s䞎 TLS。
  • 蟹界诎明Plan0/1 登圕态䞚务垧䞍重倍携垊 ML-DSA 倖层筟䟝赖 JWTHMAC-SHA256+ 报文 HMAC-SHA256 +可选GCM若芁求每䞀垧均垊抗量子非对称倖层筟应䜿甚 Plan2 或 RPCX 的 ML-DSA 路埄。䌠蟓层 TLS 1.3 仍建议由眑关/反向代理终止。

实现流皋䞎分层防技见 README_SECURITY.md。

栞心组件架构
┌─────────────────────────────────────────────────────────────────┐
│                      FreeGo Framework                           │
├──────────────────────────────────────────────────────────────────
│              䞉倧服务端HTTP · WebSocket · RPCX                │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │  HTTP · WebSocket · RPCX                                  │   │
│  │  • 单机 QPS: 50,000+HTTP 兞型场景视硬件              │   │
│  │  • 响应延迟: 亚毫秒级兞型 HTTP 路由                   │   │
│  └──────────────────────────────────────────────────────────┘   │
├──────────────────────────────────────────────────────────────────
│                  Filter Chain (过滀噚铟)                         │
│  ┌────────────┬────────────┬────────────┬────────────┬──────┐   │
│  │ 限流过滀噚  │ 参数过滀噚  │ 䌚话过滀噚  │ 权限过滀噚  │ 自定义│   │
│  └────────────┮────────────┮────────────┮────────────┮──────┘   │
├──────────────────────────────────────────────────────────────────
│           Security & CryptoPlan2 抗量子 + JWT/报文 HMAC-SHA256   │
│  ┌────────────┬────────────┬────────────┬────────────┬──────┐   │
│  │ JWT/HS256  │ ML-DSA-87  │ ML-KEM-1024│ AES-256-GCM│HMAC256│   │
│  └────────────┮────────────┮────────────┮────────────┮──────┘   │
├──────────────────────────────────────────────────────────────────
│                Business Logic Layer (䞚务层)                     │
│  ┌────────────┬────────────┬────────────┬────────────┬──────┐   │
│  │ 请求䞊䞋文  │ 路由管理    │ 䞭闎件管理  │ 错误倄理    │ 监控 │   │
│  └────────────┮────────────┮────────────┮────────────┮──────┘   │
├──────────────────────────────────────────────────────────────────
│                  ORM Layer (数据访问层)                          │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │  FreeGo ORM                                              │   │
│  │  • 零内存浪莹 • 极䜎反射热点 • 粟确容量预䌰                │   │
│  │  • 高并发䌘化性胜星著提升                                │   │
│  └──────────────────────────────────────────────────────────┘   │
├──────────────────────────────────────────────────────────────────
│                 Database Layer (数据库层)                        │
│  ┌────────────┬────────────┬────────────┬────────────┬──────┐   │
│  │   MySQL    │  MongoDB   │ Redis 猓存 │ 锁 / 限流  │ 扩展  │   │
│  └────────────┮────────────┮────────────┮────────────┮──────┘   │
└─────────────────────────────────────────────────────────────────┘

【性胜指标摘圕】2026-05-19`http_test.go` 本机 1m 压测诊见 [`http_benchmark_report.md`](./http_benchmark_report.md)
• `PostByPlan2`ML-KEM+ML-DSA Plan2 登圕`/login`: ≈3,393 TPS  • `PostByPlan01`JWT+HMAC-SHA256 登圕态`/getUser`: ≈52,320 TPS
• PostByPlan2 ns/op: 358,253  • PostByPlan01 ns/op: 22,932  • 倱莥率: 0.00%
• MySQL FindOne: 11,169 ns/opFreeGo vs 16,471 ns/opGORM
• MySQL Update: 180,680 ns/opFreeGo vs 358,455 ns/opGORM
• 并发连接: 10,000+                         • 倱莥率: 0.00%报告样本批次

🔧 快速匀始

📊 安装
go get github.com/godaddy-x/freego
🚀 基础瀺䟋
package main

import (
    "github.com/godaddy-x/freego/node"
    "github.com/godaddy-x/freego/utils/jwt"
)

func main() {
    httpNode := &node.HttpNode{}

    // 配眮 JWT 讀证
    httpNode.AddJwtConfig(jwt.JwtConfig{
        TokenKey: "your-256-bit-secret-key",
        TokenExp: jwt.ONE_HOUR,
    })

    // 添加路由
    httpNode.GET("/health", func(ctx *node.Context) error {
        return ctx.Json(map[string]interface{}{"status": "ok"})
    })

    // 启劚服务
    httpNode.StartServer(":8080")
}

🔐 安党特性

抗量子攻击䞎讀证䜓系
  • Plan2 登圕授权抗量子攻击: ML-KEM-1024 单向封装协商䌚话密钥 + ML-DSA-87 双向倖层身仜筟eHTTP/WebSocket/RPCX 䞻铟路已移陀 Ed25519/X25519
  • JWT Token: 兞型䞺 HMAC-SHA256HS256 筟名第䞉段支持短 exp 侎 RBAC细节以 utils/jwt 䞎路由配眮䞺准
  • 䌚话 Secret: GetTokenSecret 䞎筟发密钥协同掟生䞍萜库、按需掟生䟛报文 MAC /可选加密
  • HMAC-SHA256: 䞚务 s 䞎掚送统䞀完敎性 MACSignBodyMessage
  • AES-256-GCM: 蜜荷讀证加密按 Plan / 路由启甚
倚重讀证䜓系登圕后
  • 登圕态 Plan0/1JWTHMAC-SHA256+ 报文 sHMAC-SHA256 +可选AES-GCM
  • 匿名 Plan2圚䞊列基础䞊增加 ML-KEM/ML-DSA 非对称保技诊见安党文档
安党机制

圚密码孊胜力之䞊框架圚请求进入䞚务前区制执行䞋列机制HTTP / WebSocket / RPCX 䞻铟路䞀臎细节以源码䞺准

机制 䜜甚 实现芁点
时闎窗 限制过期请求 默讀 ±5 分钟jwt.FIVE_MINUTES校验 body.t
协议 Nonce 防重攟、唯䞀请求 n = Base64(32B CSPRNG)ValidProtocolNonceRedis 去重兞型 TTL 10 分钟
筟名去重 防同䞀 s 重攟 validReplayAttack 对 HMAC 筟名猓存拒绝重倍
规范䞲绑定 防跚接口/降级 MAC/AAD 绑定 path + d + n + t + p (+ u)HTTP 芁求 body.r 䞺空
Plan 分流 按暡匏校验 HTTP 以 p 区分 Plan01 / Plan2WS 及结合 UsePlan2 侎 KeyRoute/LoginRoute
双层校验Plan2 身仜 + 完敎性 先验 ML-DSA 倖层 e再验 HMAC-SHA256s䞎 GCM
掚送验筟 防䌪造广播 c=300s 算法䞎䞚务盞同密钥䞺 广播密钥PushKeyProvider / SetBroadcastKey
过滀噚铟 讀证䞎滥甚控制 眑关/方法/甚户 䞉级限流SessionFilterJWTRoleFilterRBAC
垞量时闎比蟃 降䜎时序风险 CompareBase64Sign / subtle.ConstantTimeCompare 校验 s

字段速查易混项

  • n协议随机数32 字节≠ GCM 密文内 12 字节 IV≠ 订阅 ID 甹的 UUID。
  • s对称 MACHMAC-SHA256Plan2 及有非对称 eML-DSA。
  • Token / SecretJWT 䞺 HMAC-SHA256 兞型栈䌚话 Secret 由 GetTokenSecret 等䞎筟发密钥协同掟生实现见源码。

安党架构䞎 Plan 流皋见 README_SECURITY.md。

📈 性胜对比

HTTP API 性胜
测试场景 SDK 方法 Benchmark 压测口埄 每秒执行数 ns/op B/op 倱莥率
Plan2 匿名登圕ML-DSA + ML-KEM PostByPlan2 BenchmarkHttpSDK_PostByPlan2 1m × 1 run ≈ 3,393/s 358,253 175,721 0.00%
Plan0/1 登圕态请求 PostByPlan01 BenchmarkHttpSDK_PostByPlan01 1m × 1 run ≈ 52,320/s 22,932 4,996 0.00%

完敎方法、原始蟓出䞎倱莥统计口埄见 http_benchmark_report.md。

ORM 性胜对比MySQL独立进皋 60s
场景 FreeGosqld GORM GORM / FreeGo
FindOne ns/op 11,169 16,471 ≈ 1.47×
FindList 100 ns/op 165,937 253,354 ≈ 1.53×
FindList 500 ns/op 596,669 825,536 ≈ 1.38×
FindList 1000 ns/op 422,738 1,472,001 ≈ 3.48×
FindList 2000 ns/op 751,271 3,189,665 ≈ 4.25×
Save ns/op 301,592 368,179 ≈ 1.22×
Update ns/op 180,680 358,455 ≈ 1.98×

䞊衚来自 orm_performance_report.md 的独立进皋 60s 批次各分项倱莥率均䞺 0.00%。Mongo 见 mongodb_performance_report.md。

🗄 ORM 特性

栞心䌘化技术
  • 零内存浪莹: 粟确容量预分配避免扩容
  • 极䜎反射匀销: 热点路埄䟧重盎接装配䞎预分配减少反射䟝赖元数据解析以 ormx 䞺准
  • 智胜预䌰: 递園 OR 条件粟确容量计算
  • 高并发支持: 原子操䜜和智胜连接池
适甚场景
  • 高频数据库操䜜
  • 倧数据量倄理
  • 内存敏感应甚
  • 区䞀臎、高性胜或数据密集型䞚务系统

🎯 选择指南

选择 FreeGo 的理由
需求场景 FreeGo 䌘势 适甚项目
🚀 高性胜 MySQL 倚场景 ns/op 䜎于 GORM纊 1.22×~4.25× 高并发 Web 服务
🔒 区安党 / 支付场景 Plan2 抗量子登圕 + JWT/报文 HMAC-SHA256见安党文档 金融、支付系统
💟 内存䌘化 圚 Save / Update 等写路埄 B/op、allocs/op 曎䜎 内存敏感应甚
🗄 数据库密集 极䜎反射热点 ORM智胜容量预䌰 数据密集型系统
快速郚眲
# 瀺䟋Go 版本䞎 go.mod 䞀臎适甚于䜠的应甚仓库本仓库䞺库时需自垊 main 包再构建
FROM golang:1.26-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]

📞 联系䞎支持

欢迎通过 Issues 反銈问题䞎建议。

Documentation ¶

The Go Gopher

There is no documentation for this package.

Directories ¶

Path Synopsis
Package rabbitmq 提䟛RabbitMQ消息队列的Go实现
Package rabbitmq 提䟛RabbitMQ消息队列的Go实现
Package cache 提䟛Redis猓存管理功胜 基于 go-redis v9 库提䟛高性胜Redis猓存操䜜
Package cache 提䟛Redis猓存管理功胜 基于 go-redis v9 库提䟛高性胜Redis猓存操䜜
limiter
Package rate provides a rate limiter.
Package rate provides a rate limiter.
package ballast 提䟛基于"压舱石"ballast的GC䌘化工具 通过预分配长期持有的倧块内存调敎Go垃土回收的觊发阈倌减少GC频率 适甚于内存䜿甚频繁波劚的服务需根据实际内存需求合理配眮
package ballast 提䟛基于"压舱石"ballast的GC䌘化工具 通过预分配长期持有的倧块内存调敎Go垃土回收的觊发阈倌减少GC频率 适甚于内存䜿甚频繁波劚的服务需根据实际内存需求合理配眮
sdk
Package goquery implements features similar to jQuery, including the chainable syntax, to manipulate and query an HTML document.
Package goquery implements features similar to jQuery, including the chainable syntax, to manipulate and query an HTML document.
ormx
impl
Package impl 实现 gRPC CommonWorkerP=0 明文s=SHA256(规范字段)e=ML-DSA.Sign(SHA256(规范字段))Cipher 䞺 *crypto.MLDSA87Object。
Package impl 实现 gRPC CommonWorkerP=0 明文s=SHA256(规范字段)e=ML-DSA.Sign(SHA256(规范字段))Cipher 䞺 *crypto.MLDSA87Object。
pb
decimal
Package decimal implements an arbitrary precision fixed-point decimal.
Package decimal implements an arbitrary precision fixed-point decimal.
jwt
sdk
snowflake
Package snowflake provides a very simple Twitter snowflake generator and parser.
Package snowflake provides a very simple Twitter snowflake generator and parser.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL