Go 日常开发常备第三方库和工具(下)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 重点和大家分享下我们日常开发中所使用到的一些第三方库与工具。 这里我主要将这些库分为两类: 业务开发 基础工具开发

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:


网络异常,图片无法展示
|


网络异常,图片无法展示
|
最后截取我在内部的分享就概括了整体的思想 --引用自公司一司姓同事


也许我们内部经过多次迭代,觉得有能力开放出来给社区带来一些帮助时也会尝试开源;现阶段就不嫌丑了。


这些库都是我们日常开发最常用到的


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
缓存 弹性计算 API
用 Go 快速开发一个 RESTful API 服务
用 Go 快速开发一个 RESTful API 服务
|
17天前
|
Go 数据安全/隐私保护 开发者
Go语言开发
【10月更文挑战第26天】Go语言开发
32 3
|
18天前
|
Java 程序员 Go
Go语言的开发
【10月更文挑战第25天】Go语言的开发
26 3
|
18天前
|
JSON 监控 安全
go语言选择合适的工具和库
【10月更文挑战第17天】
11 2
|
3月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
131 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
3月前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
3月前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
3月前
|
Shell Go
Go 语言Air 工具使用入门
在Go开发中,频繁的手动重启应用以加载新代码既耗时又低效。为此,我们引入了Air——一款专为Go项目设计的自动重载工具。Air通过监听文件变化,实现代码更改后的自动编译与运行,极大提升了开发效率。本文将指导你完成Air的安装与配置,包括如何启动Air、忽略临时文件以及理解其工作原理,让Go项目开发更加流畅高效。
|
3月前
|
Kubernetes 数据可视化 Java
|
3月前
|
算法 测试技术 Go