这是一个Go语言的通用工具库,包含了微服务开发中常用的各种工具和组件。
- grpcx: gRPC相关工具,包括负载均衡器、熔断机制、日志、prometheus可视化、trace链路追踪等
- ginx: Gin框架扩展,包含redis限流中间件、prometheus可视化、自定义日志、服务器包装等
- gormx: GORM扩展,包含缓存、连接池、查询构建器、双写机制(可以指定源、目标数据库)、读写分离等
- logger: 日志工具,支持结构化日志和全局实例
- redisx: Redis扩展,包含OpenTelemetry和Prometheus集成
- saramax: Sarama Kafka客户端扩展,支持批量生产者传递、转递结构体到kafka、批量消费者模式等
- ratelimit: 限流工具,支持Redis滑动窗口算法
- migrator: 数据库迁移工具、支持同源数据库不停机迁移。有增量同步、全量同步;支持切换源表目标表切换、双写和校验、自定义比较方法等
- cronx: 定时任务扩展
- netx: 网络工具,如IP地址获取等
- ai: AI服务封装,支持聊天对话、文章摘要生成、文本翻译、情感分析等功能
- httpx: HTTP请求工具,提供链式调用的HTTP客户端,支持JSON Body、Header设置、查询参数等
- openim: OpenIM客户端封装,集成MongoDB支持,用于即时通讯(IM)服务
- wego: 应用框架封装,整合GRPC、Gin Web服务器、Kafka消费者和定时任务,便于Wire依赖注入
go get github.com/Kirby980/go-pkgimport "github.com/Kirby980/go-pkg/grpcx"
// 使用自定义负载均衡器
cc, err := grpc.Dial("etcd:///service/user",
grpc.WithDefaultServiceConfig(`{
"loadBalancingConfig": [
{
"smooth_weight_round_robin": {}
}
]
}`))import "github.com/Kirby980/go-pkg/ginx"
server := ginx.NewServer()
server.Use(ginx.Logger())
server.Use(ginx.RateLimit())import "github.com/Kirby980/go-pkg/gormx"
// 使用缓存查询
repo := gormx.NewRepository(db)
result, err := repo.QueryWithCache(ctx, "cache_key", func() (interface{}, error) {
return userService.GetUser(id)
})import "github.com/Kirby980/go-pkg/ai"
// 创建AI服务
aiService, err := ai.NewService()
// 基础聊天
response, err := aiService.ChatCompletion(ctx, "你好,请介绍一下Go语言")
// 生成文章摘要
summary, err := aiService.GenerateArticleSummary(ctx, articleContent)
// 文本翻译
translated, err := aiService.TranslateText(ctx, "Hello World", "中文")
// 情感分析
sentiment, err := aiService.AnalyzeSentiment(ctx, "这个产品非常好用!")import "github.com/Kirby980/go-pkg/httpx"
// 链式调用HTTP请求
resp := httpx.NewRequest(ctx, http.MethodPost, "https://api.example.com/users").
AddHeader("Authorization", "Bearer token").
AddParam("page", "1").
AddParam("size", "10").
JSONBody(map[string]interface{}{
"name": "test",
"age": 20,
}).
Do()
// 解析响应
var result map[string]interface{}
err := resp.JSONScan(&result)import "github.com/Kirby980/go-pkg/openim"
// 创建OpenIM客户端(集成MongoDB)
client := openim.NewOpenIMClient("http://127.0.0.1:10002", "your-secret")
// 使用客户端进行IM操作
// 注: 需要配置MongoDB连接 mongodb://root:example@127.0.0.1:27017/openim_v3import "github.com/Kirby980/go-pkg/wego"
// Wire依赖注入时使用
type App = wego.App
// 创建应用实例,整合多个服务
app := &wego.App{
GRPCServer: grpcServer, // gRPC服务器
WebServer: ginServer, // Gin Web服务器
Consumers: []saramax.Consumer{consumer1, consumer2}, // Kafka消费者
Cron: cronScheduler, // 定时任务
}欢迎提交Issue和Pull Request!
MIT License