随着云计算的大力发展,“东数西算”工程正式全面启动,作为背后的云计算主力开发语言Golang,那是必须会更热门。本文整理项目中用的比较好的各开源库,只推荐1个,减轻技术选型压力。
1、Http框架 Gin
Github star 56.2K,推荐指数 ★★★★★ Github地址:https://github.com/gin-gonic/gin
Gin 是一个用 Go (Golang) 编写的 HTTP web框架,拥有更好性能的 API 框架,文档非常完全,很多微服务也很方便集成。其他框架不推荐,Gin 绝对最优秀的。
touch example.go
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
go run example.go
2、 ORM:Gorm
Github star 27.1K,推荐指数 ★★★★☆ Github地址:https://github.com/go-gorm/gorm/
官网:GORM - The fantastic ORM library for Golang, aims to be developer friendly. 推荐理由:代码最优雅,场景最丰富,满足你的SQL场景需求。
- 全功能 ORM
- 关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承)
- Create,Save,Update,Delete,Find 中钩子方法
- 支持 Preload、Joins 的预加载
- 事务,嵌套事务,Save Point,Rollback To to Saved Point
- Context、预编译模式、DryRun 模式
- 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
- SQL 构建器,Upsert,锁,Optimizer/Index/Comment Hint,命名参数,子查询
- 复合主键,索引,约束
- 自动迁移
- 自定义 Logger
- 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
- 每个特性都经过了测试的重重考验
- 开发者友好
3、配置管理:viper
Github star 18.5K,推荐指数 ★★★★☆ Github地址:https://github.com/spf13/viper 官方例子非常易用。
io.Reader
4、日志管理:zap
logger, _ := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
// Structured context as loosely typed key-value pairs.
"url", url,
"attempt", 3,
"backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)
5、Redis
Github star 13.7K,推荐指数 ★★★★☆ Github地址:GitHub - go-redis/redis: Type-safe Redis client for Golang 如果你用的缓存或队列是Redis,那就用它,用它,用它。
6、消息队列 asynq
asynq是简单、可靠、高效的分布式任务队列。
运行实例:
7、依赖注入 wire
Github star 7.6K,推荐指数 ★★★★☆ Github地址 https://github.com/google/wire/
当代码充斥着init函数、global变量,wire是极好的代码组织能力。