# c10k **Repository Path**: cqiu/c10k ## Basic Information - **Project Name**: c10k - **Description**: 试验一下高性能框架。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-04 - **Last Updated**: 2026-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C10K 高并发通用互联网平台 基于 Go + Gin + MySQL + Redis 的高并发单体后端平台。 ## 功能模块 ### 用户模块 - 注册(用户名/手机号/邮箱/第三方OAuth) - 登录(用户名密码/手机验证码/第三方) - JWT鉴权(Bearer Token) - 个人资料管理 ### 用户设置 - 语言/时区/主题偏好 - 通知开关(站内/邮件/短信) ### 充值与余额 - 创建充值订单(支付宝/微信/余额) - 余额查询 - 支付回调 ### 服务商品 - 商品分类管理 - 商品CRUD(名称/描述/价格/库存/上下架) - 商品列表与详情 ### 订单与消费 - 下单购买(余额扣款) - 订单支付/取消 - 交易流水记录 ### 后台管理 - 管理员登录与权限控制 - 用户管理 - 商品管理 - 系统配置(KV存储) - 操作日志 ## 技术栈 | 组件 | 技术 | |------|------| | HTTP框架 | Gin | | 数据库 | MySQL (database/sql) | | 缓存 | Redis | | 消息队列 | NATS | | 日志 | slog + lumberjack | | 监控 | Prometheus | | 告警 | Webhook | | 认证 | JWT (golang-jwt) | ## 快速开始 ### 1. 环境要求 - Go 1.26+ - MySQL 3306 - Redis 6379 - NATS 4222(可选,worker异步任务用) ### 2. 初始化数据库 ```bash mysql -u root -p < docs/schema.sql ``` 默认超级管理员:`superadmin / admin123` ### 3. 配置环境变量 所有配置项都有默认值,开发环境可不设置。生产环境必须修改: ```bash export JWT_SECRET="your-production-secret" export DB_DSN="user:pass@tcp(host:3306)/c10k?charset=utf8mb4&parseTime=True&loc=Local" export ALERT_ENABLED=true export ALERT_WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx" ``` 完整环境变量列表见 `AGENTS.md`。 ### 4. 构建与运行 ```bash # 设置Go代理(国内环境必须) $env:GOPROXY="https://goproxy.cn,direct" # 安装依赖 E:\laragon\Go\bin\go.exe mod tidy # 构建 E:\laragon\Go\bin\go.exe build -o server.exe ./cmd/server/ # 运行 ./server.exe ``` 服务默认监听 `:8080`。 ### 5. 验证 ```bash # 健康检查 curl http://localhost:8080/health # Prometheus指标 curl http://localhost:8080/metrics ``` ## API 文档 ### 公开接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/v1/register` | 用户注册 | | POST | `/api/v1/login` | 用户名密码登录 | | POST | `/api/v1/login/phone` | 手机验证码登录 | | POST | `/api/v1/login/third-party` | 第三方登录 | | GET | `/api/v1/products` | 商品列表 | | GET | `/api/v1/products/:id` | 商品详情 | | GET | `/api/v1/categories` | 分类列表 | ### 用户接口(需 Bearer Token) | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/v1/profile` | 获取个人信息 | | PUT | `/api/v1/profile` | 更新个人信息(昵称/头像/手机/邮箱) | | POST | `/api/v1/change-password` | 修改密码 | | POST | `/api/v1/bind-third-party` | 绑定第三方账号 | | GET | `/api/v1/settings` | 获取用户设置 | | PUT | `/api/v1/settings` | 更新用户设置 | | GET | `/api/v1/balance` | 查询余额 | | POST | `/api/v1/recharge` | 创建充值订单 | | POST | `/api/v1/orders` | 下单购买 | | POST | `/api/v1/orders/:order_no/pay` | 支付订单 | | POST | `/api/v1/orders/:order_no/cancel` | 取消订单 | | GET | `/api/v1/orders` | 我的订单列表 | | GET | `/api/v1/transactions` | 交易流水 | ### 管理后台接口(需管理员 Token) | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/v1/admin/login` | 管理员登录 | | GET | `/api/v1/admin/dashboard` | 仪表盘 | | GET | `/api/v1/admin/profile` | 管理员个人信息 | | POST | `/api/v1/admin/change-password` | 修改密码 | | GET/POST | `/api/v1/admin/admins` | 管理员管理 | | GET | `/api/v1/admin/users` | 用户列表 | | GET | `/api/v1/admin/users/:id` | 用户详情 | | GET/POST/PUT | `/api/v1/admin/products` | 商品管理 | | POST | `/api/v1/admin/categories` | 分类管理 | | GET | `/api/v1/admin/orders` | 消费订单列表 | | GET | `/api/v1/admin/recharge-orders` | 充值订单列表 | | POST | `/api/v1/admin/recharge/callback` | 充值回调 | | GET/POST | `/api/v1/admin/config` | 系统配置 | ## 监控 - **Prometheus**: `GET /metrics` 端点,包含: - HTTP请求量、延迟分布 - 数据库连接池状态 - Redis缓存命中率 - Goroutine数量与峰值 - 内存分配与GC - **日志**: JSON格式写入 `logs/server.log`,自动轮转(100MB/文件,保留3份) - **告警**: Webhook推送,支持错误率、P99延迟、Goroutine泄漏、DB连接池阈值告警 ## 项目结构 ``` c10k/ ├── cmd/server/main.go # 入口,依赖注入与路由注册 ├── internal/ │ ├── config/ # 环境变量配置 │ ├── handler/ # HTTP处理器 │ ├── middleware/ # 日志/限流/监控中间件 │ ├── model/ # 数据模型 │ ├── repository/ # 数据库访问 │ ├── service/ # 业务逻辑 │ └── worker/ # NATS异步worker ├── pkg/ │ ├── auth/ # JWT认证+中间件 │ ├── cache/ # Redis封装 │ ├── db/ # MySQL封装 │ ├── logger/ # slog日志 │ └── alert/ # Webhook告警 ├── docs/ │ ├── architecture.md # 架构文档 │ └── schema.sql # 建表SQL └── AGENTS.md # Agent操作指南 ```