MinIO 是一个高性能的分布式对象存储系统,兼容 Amazon S3 接口,适用于私有云、公有云和混合云环境。 项目地址: 🔗 GitHub:https://github.com/minio/minio 简介 MinIO 是用 Go 语言编写 的开源对象存储服务,它遵循 S3 API 协议,因此可以与大量现有工具无缝对接。 MinIO 的目标是成为云原生时代的 “现代对象存储解决方案”,广泛应用于 Kubernetes、数据湖、AI/ML 存储等场景。 特点 1. S3 兼容性 MinIO 完全兼容 Amazon S3 的 API,意味着你可以用 AWS 的 SDK 或工具(如 s3cmd, rclone, awscli)直接对接 MinIO,无需修改业务逻辑。 2. 高性能 读写速度非常快,甚至比 AWS S3 更快。 采用 SIMD、零拷贝、并发 IO 等优化手段。 3. 分布式部署 支持横向扩展,节点越多,容量越大、性能越高。 支持 erasure code 分布式容错 支持跨节点纠删码(Erasure Code) 多副本冗余、自动修复损坏数据 4. 部署简单 单个二进制文件.... 有更新! golang每日一库之MinIO golang每日一库
urfave/negroni 是一个轻量级的、可扩展的 Go 中间件库,专为构建 HTTP 服务而设计。 它的核心理念是中间件栈(Middleware Stack),可以像洋葱一样一层层包裹处理请求,非常适合构建具有清晰请求生命周期的 Web 应用或 API。 GitHub 地址:https://github.com/urfave/negroni 特点 中间件机制清晰简洁:支持多个中间件,按顺序执行 兼容 http.Handler 接口:能无缝接入标准库或其他框架(如 Gorilla Mux) 支持中间件链式调用和终止 自带常用中间件:Recovery、Logger、Static 等 极易扩展:只需实现 negroni.Handler 接口 安装 go get github.com/urfave/negroni 快速🌰 package main import ( "fmt" "net/http" "github.com/urfave/negroni" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func.... 有更新! golang每日一库之urfave/negroni golang每日一库
Zinx 是一个用 Go 语言编写的轻量级、并发 TCP 服务器框架,旨在帮助初学者深入理解 TCP 服务端开发的核心架构,同时具有生产级特性的模块化设计 。 设计理念 学习导向:源码精简,框架和教程同步开发,分版本迭代,一步步构建功能,降低学习门槛 。 生产适用:模块化、扩展性强,已被用于游戏服务器、长连接消息转发、Web 后端插件等。 快速上手 使用 Zinx 实现一个基本 TCP 服务仅需三步 : func main() { s := znet.NewServer() s.AddRouter(1, &PingRouter{}) s.Serve() } type PingRouter struct { znet.BaseRouter } func (r *PingRouter) Handle(req ziface.IRequest) { fmt.Println("recv:", string(req.GetData())) req.GetConnection().SendBuffMsg(0, []byte("ping...ping...")) } 这里简单给个例子,如果你.... 有更新! golang每日一库之Zinx golang每日一库
viant/toolbox 是一个由 Viant 开发的功能丰富的 Go 工具库,它集合了大量常用的实用工具函数,涵盖字符串、时间、反射、文件、HTTP、配置处理等多个方面,是“工具人”写项目时不可多得的瑞士军刀型库。 一句话总结 toolbox 是一个“啥都能干点”的 Go 通用工具库,适合需要各种小功能支持但又不想一一造轮子的开发者。 包结构 它的模块设计清晰,大致可以分为以下几个子包: 包名用途介绍 collection集合操作辅助,如 Set、LinkedList等 format格式化辅助,如模板渲染、SQL 拼接等 secret加解密相关(对称/非对称加密) storage抽象存储接口,支持本地和云存储(如 GCS) conversion类型转换工具 reader多种数据源读取能力(支持 CSV、JSON、INI 等) fileutil文件与目录操作 process外部进程启动与管理 shellShell 命令封装执行 urlURL 构建、解析等 reflect反射封装工具 data数据处理,如 Map/Struct 转换等 assert简易测试断言工具 httpHTTP 请.... 有更新! golang每日一库之工具库viant/toolbox golang每日一库
Freedom:自由不是乱来,而是架构有道 你是不是写 Go 写得挺开心的,直到有一天产品说: “这个业务流程以后会变、会拆、可能还会上天。” 于是你开始发愁: 怎么写才不会三个月后改到哭? 怎么解耦、怎么扩展、怎么不踩坑? 这时候,Freedom 跃马而来,大喊一句: “用我!让你写得自由、改得潇洒、跑得像风!” 什么是 Freedom Freedom 是一个 基于“领域驱动设计(DDD)+ 清晰分层架构” 的 Go Web 框架。它不搞花里胡哨的魔法,讲究的就是: 结构清晰,职责分明,稳定如老狗。 它有啥特别的 特性说明 基于 DDD(领域驱动设计)把业务逻辑写得像讲故事一样自然,结构清晰又高级 强分层架构Interface、Domain、Infra、Adapter…每层都像部队排好队 链路追踪神器内置中间件支持链路追踪,调 Bug 像上帝视角一样舒服 熔断限流自带 resilience 功能,服务顶不住也能优雅挂掉 中间件机制想挂日志就挂日志,想挂追踪就挂追踪,自己定义不求人 依赖注入机制解耦得干干净净,服务之间“你用我,但我不认识你” 分层图来一张 请求 -> Contr.... 有更新! golang每日一库之DDD框架freedom golang每日一库
你是不是曾经想用 Go 写个后台系统,结果一不小心就写成了 Bug 系统? 是不是写到权限控制的时候,感觉自己变成了权限受害者? 是不是本来想安安心心做个 CRUD 工人,结果被前端 UI 折磨到怀疑人生? 别怕,GoAdmin 来拯救你了! 什么是 GoAdmin 简单说,GoAdmin 就是 Go 语言界的“万能后台神器”。 它能帮你: 三分钟起飞:快速搭出一个后台系统; 一行不写也能 CRUD:直接配置表单、表格、搜索字段,页面自动蹦出来; 自带权限管理系统:你不需要再写那些 “if user.role == 超管” 了; 自带帅气界面:内置 AdminLTE,不丑,还挺潮; 还能当插件用:想挂在哪个框架上都行,Gin、Echo、Fiber、Beego,你说了算。 举个栗子 只要你写几行代码,把 GoAdmin 挂在你心爱的 Gin 路由上,然后配置一下数据库,后台系统就啪地一下出来了,快得很。 eng := engine.Default() eng.AddConfig(cfg).AddPlugins(admin.NewAdmin()).Use(router) 这不是代码,这是.... 有更新! golang每日一库之GoAdmin golang每日一库
Temporal 是一个开源的分布式工作流编排系统,旨在简化构建和运行可靠、可扩展的长时间运行的后端应用程序。 它最初是由 Uber 的 Cadence 系统演变而来,现在由 Temporal Technologies 公司主导开发。 目前已被 Coinbase、Netflix、Box、Snap 等大规模应用。 核心功能 1. 分布式工作流编排 Temporal 支持在多台机器上协调执行复杂的业务逻辑。工作流可以在失败、重启甚至升级后继续执行,不需要人工干预。 2. 持久性与容错 所有工作流状态会被持久化(通常使用 Cassandra、MySQL、PostgreSQL 等后端数据库)。这使得工作流可以在服务崩溃或网络中断时恢复执行。 3. 异步任务和重试机制 Temporal 提供强大的异步任务支持,以及自动的、可配置的重试逻辑。即使下游服务暂时不可用,也能自动重试直到成功或达到重试上限。 4. 幂等与去重 通过事件驱动和有序日志处理机制,Temporal 可以保证工作流执行的幂等性,防止重复执行任务。 5. 编程语言支持 支持多种语言 SDK: Go (temporalio/sdk-.... 有更新! golang每日一库之工作流引擎Temporal golang每日一库
Cadence 是由 Uber 开发并开源的分布式工作流编排引擎,旨在帮助开发者构建可扩展、可靠且具备容错能力的分布式应用程序。 特点 1. 容错的有状态工作流 Cadence 的工作流是“容错的有状态工作流”,即使在进程崩溃或服务重启的情况下,工作流的状态(包括局部变量、调用栈、定时器等)也能自动恢复,确保业务流程不中断。 2. 异步任务与自动重试 通过将业务逻辑拆分为工作流(Workflow)和活动(Activity),Cadence 支持异步任务执行,并内置自动重试机制,确保任务在失败后能够自动重试,提升系统的可靠性。 3. 多语言支持 官方提供 Go 和 Java 的 SDK,社区还支持 Python 和 Ruby,方便开发者根据自身技术栈选择合适的语言进行开发。这点确实很方便。 4. 可视化管理界面 Cadence 提供 Web UI,允许用户查看工作流的执行状态、历史记录,便于监控和调试。 亲测界面挺好看的。 认识组件 Cadence 的架构主要包括以下组件: Frontend Service:接收客户端请求,进行初步处理。 History Service:负责维护工作流的.... 有更新! golang每日一库之工作流引擎cadence golang每日一库