这是一个基于Go语言开发的API服务,具有IP限流和随机数据获取功能。该服务使用MongoDB存储数据,内存实现IP限流功能。
- IP限流保护:每分钟最多允许200次请求
- 自动封禁:超出限制的IP将被自动封禁10分钟
- 随机数据获取:支持从MongoDB随机获取数据
- 高性能:使用内存实现高效的限流机制
- Go 1.16+
- MongoDB 4.0+
- 在
data/data.json
文件中配置初始数据,格式如下:
[
{"type": "kfcv50", "connect": "123"}
]
- 运行初始化脚本:
cd scripts
go run init_db.go
该脚本会读取 data.json 中的数据并插入到 MongoDB 数据库中。
git clone <repository_url>
cd api_qps_go
go mod download
配置文件位于 config/config.go
,您可以根据需要修改以下配置:
// MongoDB配置
MongoURI = "mongodb://localhost:27017"
MongoDatabase = "coll"
MongoCollection = "data"
// API限流配置
MaxRequestsPerMinute = 200
BanDuration = 10 * 60 // 10分钟,单位:秒
go run main.go
服务将在 http://localhost:8080
启动
- 构建Docker镜像
docker build -t api-qps-service .
- 运行容器
docker run -d \
-p 8080:8080 \
--name api-qps-service \
api-qps-service
GET /random
响应示例:
{
"type": "example_type",
"connect": "example_connection"
}
- 每个IP每分钟最多允许200次请求
- 超出限制的IP将被自动封禁10分钟
- 被封禁的IP访问会收到429状态码
-
MongoDB连接失败
- 检查MongoDB服务是否正常运行
- 验证MongoDB连接URI是否正确
- 确保MongoDB数据库和集合已创建
-
API请求返回429状态码
- 这表示您的IP已超出请求限制或已被封禁
- 请等待一段时间后再试
- 根据实际需求调整
MaxRequestsPerMinute
和BanDuration
参数 - 适当配置MongoDB索引以提升查询性能