BloomRPC ⭐️⭐️⭐️⭐️
github.com/uw-labs/blo… 一个 gRPC
可视化工具,比起自己写 gRPC
客户端的代码那确实是要简单许多。
但也有些小问题,比如精度。如果是 int64 超过了 2^56 服务端拿到的值会发生错误,这点目前还未解决。
redis ⭐️⭐️⭐️⭐️
github.com/go-redis/re… Redis 客户端,没有太多可说的;发展了许多年,该有的的功能都有了。
elastic ⭐️⭐️⭐️⭐️
github.com/olivere/ela… 这也是一个非常成熟的 elasticsearch
库。
resty ⭐️⭐️⭐️⭐️
github.com/go-resty/re… 一个 http client, 使用起来非常简单:
// Create a Resty Client client := resty.New() resp, err := client.R(). EnableTrace(). Get("https://httpbin.org/get")
有点 Python requests
包那味了。
pulsar-client-go ⭐️⭐️⭐️
Pulsar 官方出品的 go 语言客户端,相对于 Java 来说其他语言的客户端几乎都是后娘养的;功能会比较少,同时更新也没那么积极;但却没得选。
go-grpc-middleware ⭐️⭐️⭐️
github.com/grpc-ecosys… 官方提供的 gRPC
中间件,可以自己实现内部的一些鉴权、元数据、日志等功能。
go-pilosa ⭐️⭐️⭐️
github.com/pilosa/go-p… 是一个位图数据库的客户端,位图数据库的场景应用比较有限,通常是有标签需求时才会用到;比如求 N 个标签的交并补集;数据有一定规模后运营一定会提相关需求;可以备着以备不时之需。
pb ⭐️⭐️⭐️
github.com/cheggaaa/pb 一个命令行工具进度条,编写命令行工具时使用它交互会更优雅。
总结
最后我汇总了一个表格,方便查看:
名称 | 类型 | 功能 | 星级 |
Gin | 业务开发 | HTTP 框架 |
⭐️⭐️⭐️⭐️⭐️ |
GORM | 业务开发 | ORM 框架 |
⭐️⭐️⭐️⭐️⭐️ |
errors | 业务开发 | 异常处理库 | ⭐️⭐️⭐️⭐️⭐️ |
zorolog | 业务开发 | 日志库 | ⭐️⭐️⭐️⭐️⭐️ |
excelize | 业务开发 | Excel 相关需求 |
⭐️⭐️⭐️⭐️⭐️ |
now | 业务开发 | 时间处理 | ⭐️⭐️⭐️⭐️️ |
Decimal | 业务开发 | 精度处理 | ⭐️⭐️⭐️⭐️️ |
configor | 业务开发 | 配置文件 | ⭐️⭐️⭐️⭐️️ |
go-cache | 业务开发 | 本地缓存 | ⭐️⭐️⭐️ |
copier | 业务开发 | 数据复制 | ⭐️⭐️⭐️️️ |
env | 业务开发 | 环境变量 | ⭐️⭐️⭐️️️ |
user_agent | 业务开发 | 读取 user-agent |
⭐️⭐️⭐️️️ |
phonenumbers | 业务开发 | 手机号码验证 | ⭐️⭐️⭐️️️ |
gomonkey | 基础工具 | mock 工具 |
⭐️⭐️⭐️⭐️⭐ |
goconvey | 基础工具 | 单测覆盖率 | ⭐️⭐️⭐️⭐️⭐ |
dig | 基础工具 | 依赖注入 | ⭐️⭐️⭐️⭐️⭐ |
cobra | 基础工具 | 命令行工具 | ⭐️⭐️⭐️⭐ |
cli | 基础工具 | 命令行工具 | ⭐️⭐️⭐️⭐ |
BloomRPC | 基础工具 | gRPC 调试客户端 |
⭐️⭐️⭐️⭐ |
redis | 基础工具 | Redis 客户端 | ⭐️⭐️⭐️⭐ |
elastic | 基础工具 | elasticsearch 客户端 |
⭐️⭐️⭐️⭐ |
resty | 基础工具 | http 客户端 | ⭐️⭐️⭐️⭐ |
pulsar-client-go | 基础工具 | Pulsar 客户端 |
⭐️⭐️⭐️ |
go-grpc-middleware | 基础工具 | gRPC 中间件 |
⭐️⭐️⭐ |
go-pilosa | 基础工具 | pilosa 客户端 |
⭐️⭐️⭐️ |
pb | 基础工具 | 命令行工具进度条 | ⭐️⭐️⭐️ |
星级评分的规则主要是看实际使用的频次。
最后夹带一点私货(其实也谈不上) 文中提到了我们内部有基于以上库整合了一个业务开发框架;也基于该框架上线了大大小小10几个项目,改进空间依然不少,目前还是在快速迭代中。
大概的用法,入口 main.go
:
--引用自公司一司姓同事
。
也许我们内部经过多次迭代,觉得有能力开放出来给社区带来一些帮助时也会尝试开源;现阶段就不嫌丑了。
这些库都是我们日常开发最常用到的