正在用的
lancet工具库 | lancet(柳叶刀)是一个全面、高效、可复用的go语言工具函数库。 lancet受到了java apache common包和lodash.js的启发。 |
文件/进程监控 | fsnotify 、supervisord |
Web框架 | gin 、xorm 、hero 、go-sessions |
定时任务 | gocron |
MySQL中间件 | kingshard |
工具库 | GUID 、Gjson |
网络工具 | Goproxy(TCP代理工具) 、GoReplay(Http流量回放工具) |
1、谷歌官方维护了一个基于go语言的开源项目列表:https://github.com/golang/go/wiki/Projects
2、[知乎网] 有哪些值得学习的 Go 语言开源项目?
3、[知乎用户:hack stoic] 看过 awesome-go 项目, 汇总了很多 go 开源项目。 但是 awesome-go 收集了太全了, 而且每个项目没有描述。 因此我自己根据 go 语言中文社区提供的资料,还有互联网企业架构设计中的常见组件分类, 共精心挑选了100多个开源项目(项目不限于在github开源的项目), 分成以下十几个大类。 这个项目可以理解为互联网IT人打造的中文版 awesome-go。这个项目初衷是帮助到那些想学习和借鉴优秀golang开源项目, 和在互联网架构设计时期望快速寻找合适轮子的人。
项目地址: https://github.com/hackstoic/golang-open-source-projects
-> 监控系统 - 容器技术 - PaaS工具 - 大数据 - 数据库技术 - 存储技术 - 分布式系统 - 消息系统 - 服务器管理 - 安全工具 - 网络工具 - Web工具 - Web框架 - 区块链技术 - 其它
4、[开源中国] 优秀的 Go 存储开源项目和库
5、[gocn.io] 有哪些值得学习的 Go 语言开源项目?
下面推荐几款适合学习的项目:
1、cache2go:https://github.com/muesli/cache2go
比较简单的一个缓存库,代码量很少,适合新手学习,可以学习到锁、goroutines等。
2、groupcache:https://github.com/golang/groupcache
与memcached同一作者,相当于是memcached的go语言实现。
3、nsq:https://github.com/bitly/nsq
消息分发平台,阅读代码可以了解到很多分布式、负载均衡等方面的编程。
Go项目
lantern:网络底层的东西
minio:存储方面的东西
Zenpress:Zenpress is a cms system of written in golang
goquery:是一个使用go语言写成的HTML解析库,可以让你像jQuery那样的方式来操作DOM文档
项目构建 工具
[荐]glide:Golang 包管理器(Vendor Package Management for Golang,Are you used to tools such as Cargo, npm, Composer, Nuget, Pip, Maven, Bundler, or other modern package managers? If so, Glide is the comparable Go tool.)
godep:godep helps build packages reproducibly by fixing their dependencies
govendor:Go vendor tool that works with the standard vendor file
gb:Golang 项目构建工具(A project based build tool for the Go programming language)
gogs:一款极易搭建的自助 Git 服务。
Gitea:是一个开源社区驱动的 Gogs 克隆, 是一个轻量级的代码托管解决方案,后端采用 Go 编写
Web框架
web.go、beego 、tango 、echo 、iris(号称“性能最好”的框架)
thinkgo:Thinkgo以全新的架构实现,它面向Handler接口开发,是支持智能参数映射与校验、支持自动化API文档的Go语言web框架。[开源中国]
api-gateway:A gateway to automaticly provide RESTful API for gRPC
httprouter:[荐]高性能HTTP请求路由器,良好的可扩展性
gin:[荐] 一个设计优良的高性能Web开发框架,可以用它快捷地开发出高质量的Web应用程序。
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
Ego: is a full-stack web framework written in Go, lightweight and efficient front-end component solutions, based on gin. The front-end is compiled, does not affect the back-end.
GF(Go Frame):是一款模块化、松耦合、轻量级、高性能的Go应用开发框架。支持热重启、热更新、多域名、多端口、多服务、HTTP/HTTPS、动态路由等特性 ,并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、服务注册、配置管理、模板引擎、数据校验、分页管理、数据库ORM等等等等, 并且提供了数十个内置核心开发模块集,如:缓存、日志、时间、命令行、二进制、文件锁、内存锁、对象池、连接池、数据编码、进程管理、进程通信、文件监控、定时任务、TCP/UDP组件、 并发安全容器等等等等等等。
go-restful:package for building REST-style Web Services using Go
在线重启
gin:Live reload utility for Go web servers
微服务框架
hprose:反射和RPC
skynet:分布式服务框架(RPC)
rpcx:是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的 RPC 服务框架,基于 Golang net/rpc 实现。
[荐]go-micro:A pluggable RPC framework for microservices(案例:华尔街见闻基于Golang的微服务实践)
dotweb:Simple and easy go web micro framework,微型Web框架
digota:ecommerce microservice(电子商务微服务框架)
kite:Micro-service framework in Go(今日头条 在用,相关文章:今日头条Go建千亿级微服务的实践)
twirp:twitch.tv开源的新Go RPC框架,官方博文介绍
ServiceComb:华为 微服务 框架
TP-Micro:基于 Teleport 的微服务框架
pbgo:基于Protobuf的rpc/rest迷你框架,基于pb生成rest代码
Tars-Go:腾讯 Tars 开源 腾讯 Tars 开源 Go 版本 Tars-Go,并发性能比 gRPC 高 5 倍
ORM (问卷调查)
[荐][荐]gorm:The fantastic ORM library for Golang, aims to be developer friendly
[荐]xorm:一个简单而强大的 Go 语言 ORM 框架,支持缓存,事务,乐观锁,多种数据库支持,反转等等特性。
shorm:是一款纯 go 语言打造的,支持分库,读写分离且性能优秀的 ORM
ORM:简单小巧的 Golang 版 ORM 库
ORM:简单好用
Gorose:一个小巧强悍的go语言数据库操作orm, 灵感来源于laravel的数据库操作orm, 也就是eloquent, php、python、ruby开发者, 都会喜欢上这个orm的操作方式, 主要是链式操作比较风骚)
toyorm:是一个基于database/sql库去操作数据的orm
模板引擎
pongo2:一个 Go 语言的模板引擎,其语法与 Django 模板类似,并且完全兼容 Django 模板。
hero:力争做最好的 Go 模板引擎,中文介绍。a handy, fast and powerful go template engine, which pre-compiles the html templates to go code
quicktemplate:Fast, powerful, yet easy to use template engine for Go. Optimized for speed, zero memory allocations in hot paths. Up to 20x faster than html/template
进程管理/监控/运维/代码发布
supervisor 的client api,Github地址
supervisord:a go-lang supervisor implementation
[荐]Prometheus:是一个开源的 服务监控系统 和 时间序列数据库
fsnotify:跨平台的文件系统监控工具(可用来监控 go 文件的修改,并实现自动编译的功能)
[荐]Open-Falcon:来自小米公司的 互联网企业级监控系统
restic:快速、安全、高效的备份工具
Gearman in Golang:Gearman的Go实现
codepub:暴走皮皮虾之 代码发布系统,是现代的持续集成发布系统,由后台管理系统和agent两部分组成,一个运行着的agent就是一个节点,本系统并不是造轮子,是"鸟枪"到"大炮"的创新,对"前朝遗老"的革命。
MySQL 中间件
mixer:a MySQL proxy powered by Go
kingshard:A high-performance MySQL proxy 【开源访谈】Kingshard 作者 陈非 访谈实录
golang_mysql_proxy_pool - golang开发的一个mysql连接代理池, HTTP返回查询结果。
go-redis-memory-analysis:Go 实现的 Redis 内存分析工具:用于找出占用内存较多的 Key,将结果导出至 CSV 文件
Gaea:是小米中国区电商研发部研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。Gaea支持分库分表、sql路由、读写分离等基本特性,更多详细功能可以参照下面的功能列表。其中分库分表方案兼容了mycat和kingshard两个项目的路由方式。Gaea在设计、实现阶段参照了mycat、kingshard和vitess,并使用tidb parser作为内置的sql parser,在此表达诚挚感谢。
IM、消息推送
Gorush:A push notification server written in Go (Golang).
喧喧:是一个轻量级的企业聊天软件。由然之协同办公团队开发。 http://xuan.im
NSQ:消息队列,学习一下goroutine和channel的各种使用
[荐]KiteQ:是一个基于 Go + Protobuff 实现的多种持久化方案的 MQ 框架(消息队列),支持两阶段提交 分布式事务 。相关分享:基于 Go 实现的分布式 MQ
httpmq:A simple HTTP message queue written in Go with goleveldb, just like httpsqs written in C with Tokyo Cabinet.
gopush-cluster:实时消息推送集群
goim:是一个支持集群的 IM 及 实时推送 服务(支持websocket,http和tcp协议)
imgo:是一个支持集群的实时推送服务,基于goim,相比之下新增离线消息系统,以后会增加IM功能的支持。
im-qq/imgo:一个使用Go语言实现的IMServer,具备高性能高并发特性。
Tim:分布式聊天服务器
Cherry:Web 聊天引擎
FishChat:分布式可伸缩 IM 服务器
Mattermost:是一个 Slack 的开源替代品。Mattermost 采用 Go 语言开发,这是一个开源的团队通讯服务。为团队带来跨 PC 和移动设备的消息、文件分享,提供归档和搜索功能。
Golang-socket:一个简单的 golang socket 服务框架,使用简单的通信协议解决粘包问题,通过心跳计时的方式能及时关闭长链接,自定义 Route 规则,调用 Controller 进行任务的分发处理
Tao:轻量级 TCP 异步框架
evio:高并发异步tcp 框架
gotcp:A Go package for quickly building tcp servers
zinx:是一个基于Golang的轻量级并发TCP服务器框架
[荐]Lhttp:一个基于 websocket 服务端框架,提供一个类似 http 的协议去帮助开发者开发长连接的应用。
Lhttp-web-demo:a chat room demo of lhttp
[荐]Websocket:用 go 实现的 websocket
go-socket.io:socket.io library for golang, a realtime application framework.
go-push:golang实现的、可扩展的通用消息推送原型。(GO千万级消息推送服务)
Golang 轻量级-高并发socket框架——chitchat
gev:是一个轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库。
网络代理(TCP转发)
spp:是一个简单强大的网络代理工具
抢购系统(高并发处理)
10billionhongbaos:Golang 实现单机支持100万用户,同时模拟了2015年微信红包的1400万QPS的场景,让服务器在压力下,轻松地完成业务。
定时任务/异步任务
cron:a cron library for go,网友源码分析
jiacrontab:提供可视化界面的定时任务管理工具(简单可信赖的任务管理工具)
Webcron:一个定时任务管理器,基于Go语言和beego框架开发。用于统一管理项目中的定时任务,提供可视化配置界面、执行日志记录、邮件通知等功能,无需依赖*unix下的crontab服务。
kingtask:是一个由Go开发的异步任务系统。
cronsun:【荐】是一个由Go开发的分布式任务系统,单个结点和 *nix 机器上的 crontab 近似。cronsun 是为了解决多台 *nix 机器上crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。cronsun 和 Azkaban、Chronos、Airflow 这些不是同一类型的。支持简单的权限管理了
gocron:使用Go语言开发的定时任务集中调度和管理系统,用于替代 Linux-crontab
scheduler:一个用Go写的分布式任务调度软件(a distributed job scheduler using golang)
CloudTask:是一个轻量级的分布式定时任务管理平台,它非常轻量小巧,使用简单,我们可以上传、暂停/启动任务,克隆一个任务,修改任务的执行命令,或者查看任务的调度状态、执行日志,开发人员可以采用自己最熟悉的编程语言来编写任务程序,可以是一个控制台程序,也可以是一段 shell 脚本,上传至平台后设置定时执行规则即可。
jiaCrontab:是一款完全自主设计并实现的定时任务&常驻任务管理工具。 提供了方便的界面用于完全控制系统中运行的定时任务和常驻任务。
接口文档
apidoc:是一个简单的 RESTful API 文档生成工具,它从代码注释中提取特定格式的内容,生成文档。目前已支持以下语言:C#、C/C++、D、Erlang、Go、Groovy、Java、Javascript、Pascal/Delphi、Perl、PHP、Python、Rust、Ruby、Scala 和 Swift。
[荐]Swagger:是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
游戏引擎/服务器框架
oka:A game engine in Go
mqant:[CSDN文章介绍]是一款基于Golang语言的简洁,高效,高性能的分布式游戏服务器框架
link:[达达游戏]Go语言网络层脚手架
工具库
xlsx:用来读取 xlsx 文件(即 Excel 文件)
excelize:Golang library for reading and writing Microsoft Excel™ (XLSX) files.
fsnotify:文件夹修改监控工具(Cross-platform file system notifications for Go)
VerifyCode:验证码
Captcha:非常好用的验证码模块,代码库文档齐全,有示例代码,方便学习,推荐大家使用。
Cookie:Advanced cookie library for Go, support signed cookies.
Session:Session package for Golang
Fuh:文件上传 工具包
MyMysql:MySQL驱动,MySQL Client API written entirely in Go
Grbac:权限管理服务平台, 利用shiro权限管理设计思想, 支持单用户多角色,比RBAC的资源管理更细粒度化
Sms:短信服务,包括创蓝和云片网
Official_account:公众号第三方托管平台,包括公众号授权、微信支付和模板消息等公众号托管业务
Goreleaser:Go二进制文件发布系统:
Mobile-Detect:用于检测移动设备类型(包括平板电脑)
solarlunar:阳历和阴历相互转化的工具类(1.实现了阳历和阴历的相互转化,支持1900年到2049年。2.支持节假日的计算)
Guuid: 由 Go 语言开发的 UUID 生成服务
GUID:[荐] UUID package for Go ,[CSDN] 使用教程
Gjson:Go 快速获取 json 值
jsonparser:Alternative JSON parser for Go that does not require schema (so far fastest)
ants:是一个高性能的协程池,实现了对大规模goroutine的调度管理、goroutine复用,允许使用者在开发并发程序的时候限制协程数量,复用资源,达到更高效执行任务的效果。
QLog:一款极简golang日志包
henrylee2cn 的作品
Faygo:Faygo以全新的架构实现,它面向Handler接口开发,是支持智能参数映射与校验、支持自动化API文档的Go语言web框架。
Teleport:Teleport是一款适用于分布式系统的高并发API框架,它采用socket全双工通信,实现S/C对等工作,支持长、短两种连接模式,支持断开后自动连接与手动断开连接,内部数据传输格式为JSON。
Teleport 是一个通用、高效、灵活的TCP Socket框架。可用于Peer-Peer对等通信、RPC、长连接网关、微服务、推送服务,游戏服务等领域。
Apiware:将 Go 语言 net/http 及 fasthttp 请求的指定参数绑定到结构体,并验证参数值的合法性。 建议您可以使用结构体作为 web 框架的 Handler,并用该中间件快速绑定请求参数,节省了大量参数类型转换与有效性验证的工作。同时还可以通过该结构体标签,创建 swagger 的 json 配置文件,轻松创建 api 文档服务。
Pholcus:Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。
colly:Fast and Elegant Scraping Framework for Gophers,CPU单核超过1k次请求的Web采集利器。
微信 相关
微信公众平台SDK
https://github.com/chanxuehong/wechat
https://github.com/sidbusy/weixinmp
https://github.com/arstd/weixin
https://github.com/wizjin/weixin
https://github.com/hoperong/RabbitGo
https://github.com/Cheney-Su/go_weixin
https://github.com/i11cn/go_weixin
微信支付SDK
https://github.com/imzjy/wxpay
微信支付/支付宝支付
https://github.com/philchia/gopay
微信公众平台/微信企业号/微信商户平台/微信支付
https://github.com/philsong/wechat2
Gopusher 一个通用的长连接服务
Gopusher Comet 是一个支持分布式部署的通用长连接接入层服务,接管客户端连接。 你可以很容易的使用 http api 来构建实时聊天,通知推送应用,甚至游戏等,如 https://chat.yadou.net/ 是我用 PHP 源码 基于 Gopusher Comet 实现的一个即时聊天。
项目地址:https://github.com/Gopusher/comet (如果觉得不错的话,欢迎star ^_^)
应用开发者文档:https://github.com/Gopusher/comet/wiki