GoFr - 加速微服务开发的Go框架实践与探讨
GoFr - 加速微服务开发的Go框架实践与探讨 大家好,我非常高兴地宣布,我们过去七年一直在开发一个 Go 框架,现在我们已经将其开源了。
GitHub - gofr-dev/gofr: 一个固执己见的 Go 框架,用于加速…
一个固执己见的 Go 框架,用于加速微服务开发 - GitHub - gofr-dev/gofr: 一个固执己见的 Go 框架,用于加速微服务开发
GoFr 旨在简化微服务的开发,内置支持以下功能:
- 配置管理
- 使用迁移进行数据库状态管理
- 内置中间件以及支持自定义中间件
- 错误管理
- 内置数据存储、文件系统、发布/订阅
- gRPC
- 链式超时控制
- 提供静态文件服务
- WebSocket
- 支持浪涌保护
- 跟踪、指标和日志
以及更多功能。
此外,它默认遵循 REST API 指南,并且已经在大型企业规模下经过了测试。
欢迎访问我们的网站:https://www.gofr.dev
1 回复
GoFr框架确实为Go语言微服务开发提供了全面的解决方案。以下是一个快速入门的示例,展示如何创建一个简单的HTTP服务:
package main
import "gofr.dev/pkg/gofr"
func main() {
app := gofr.New()
// 添加路由
app.GET("/hello", func(c *gofr.Context) (interface{}, error) {
return "Hello, GoFr!", nil
})
// 启动服务
app.Run()
}
配置管理示例:
app := gofr.New()
// 自动加载configs目录下的配置文件
// 支持YAML、JSON、环境变量等多种配置源
数据库迁移示例:
// 在migrations目录下创建SQL文件
// 框架会自动按顺序执行迁移
// 20240101000001_create_users_table.sql
中间件使用示例:
app := gofr.New()
app.Server.UseMiddleware(middleware.Logging)
app.Server.UseMiddleware(middleware.Tracing)
错误处理示例:
app.GET("/user/{id}", func(c *gofr.Context) (interface{}, error) {
id := c.PathParam("id")
user, err := getUser(id)
if err != nil {
return nil, &gofr.Response{
StatusCode: http.StatusNotFound,
Error: "User not found",
}
}
return user, nil
})
内置存储支持:
// 使用Redis
redis := app.Redis
redis.Set(c.Context, "key", "value", 0)
// 使用PostgreSQL
db := app.DB
db.Query(c.Context, "SELECT * FROM users")
指标和日志集成:
// 自动收集请求指标
// 结构化日志输出
app.Logger.Info("Server started", map[string]interface{}{
"port": app.Config.Get("HTTP_PORT"),
})
这个框架的链式超时控制和浪涌保护功能在处理高并发场景时特别有用。内置的gRPC支持使得构建多协议服务更加简单。

