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

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

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
相关文章
|
2月前
|
网络协议 Linux Go
分享一个go开发的工具-SNMP Server
分享一个go开发的工具-SNMP Server
72 0
|
6天前
|
算法 网络协议 Linux
|
2月前
|
编译器 Go 索引
浅谈go语言中的符文字符处理工具
【5月更文挑战第20天】本文简述了Go 1.20之后的rune符文处理工具和函数,`unsafe`包新增了SliceData、String和StringData函数,支持直接将slice转换为array,明确了数组和结构体比较顺序。
35 1
浅谈go语言中的符文字符处理工具
|
26天前
|
中间件 Go
go语言后端开发学习(三)——基于validator包实现接口校验
go语言后端开发学习(三)——基于validator包实现接口校验
|
1月前
|
存储 前端开发 中间件
Go Web 开发 Demo【用户登录、注册、验证】(3)
Go Web 开发 Demo【用户登录、注册、验证】
|
1月前
|
前端开发 数据库连接 Go
Go Web 开发 Demo【用户登录、注册、验证】(1)
Go Web 开发 Demo【用户登录、注册、验证】
|
2月前
|
数据可视化 算法 Java
了解go语言运行时工具的作用
【5月更文挑战第16天】本文简介`runtime`库提供系统调用包装、执行跟踪、内存分配统计、运行时指标和剖析支持。`internal/syscall`封装系统调用,保证uintptr参数有效。`trace`用于执行跟踪,捕获各种事件,如goroutine活动、系统调用和GC事件。`ReadMemStats`提供内存分配器统计。`metrics`接口访问运行时定义的度量,包括CPU使用、GC和内存信息。`coverage`支持代码覆盖率分析,`cgo`处理C语言交互,`pprof`提供性能剖析工具集成。这些功能帮助优化和理解Go程序的运行行为。
42 6
|
26天前
|
存储 Go 开发工具
go语言后端开发学习(二)——基于七牛云实现的资源上传模块
go语言后端开发学习(二)——基于七牛云实现的资源上传模块
|
26天前
|
JSON 算法 Go
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
|
2月前
|
缓存 负载均衡 网络协议
使用Go语言开发高性能服务的深度解析
【5月更文挑战第21天】本文深入探讨了使用Go语言开发高性能服务的技巧,强调了Go的并发性能、内存管理和网络编程优势。关键点包括:1) 利用goroutine和channel进行并发处理,通过goroutine池优化资源;2) 注意内存管理,减少不必要的分配和释放,使用pprof分析;3) 使用非阻塞I/O和连接池提升网络性能,结合HTTP/2和负载均衡技术;4) 通过性能分析、代码优化、缓存和压缩等手段进一步提升服务性能。掌握这些技术能帮助开发者构建更高效稳定的服务。