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 存储开源项目和库
下面推荐几款适合学习的项目:
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 服务。
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: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(电子商务微服务框架)
ORM (问卷调查)
[荐][荐]gorm:The fantastic ORM library for Golang, aims to be developer friendly
[荐]xorm:一个简单而强大的 Go 语言 ORM 框架,支持缓存,事务,乐观锁,多种数据库支持,反转等等特性。
shorm:是一款纯 go 语言打造的,支持分库,读写分离且性能优秀的 ORM
ORM:简单小巧的 Golang 版 ORM 库
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实现
MySQL 中间件
mixer:a MySQL proxy powered by Go
kingshard:A high-performance MySQL proxy 【开源访谈】Kingshard 作者 陈非 访谈实录
golang_mysql_proxy_pool - golang开发的一个mysql连接代理池, HTTP返回查询结果。
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 异步框架
[荐]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.
抢购系统(高并发处理)
10billionhongbaos:Golang 实现单机支持100万用户,同时模拟了2015年微信红包的1400万QPS的场景,让服务器在压力下,轻松地完成业务。
定时任务/异步任务
cron:a cron library for go,网友源码分析
Webcron:一个定时任务管理器,基于Go语言和beego框架开发。用于统一管理项目中的定时任务,提供可视化配置界面、执行日志记录、邮件通知等功能,无需依赖*unix下的crontab服务。
kingtask:是一个由Go开发的异步任务系统。
cronsun:是一个由Go开发的分布式任务系统,单个结点和 *nix 机器上的 crontab 近似。cronsun 是为了解决多台 *nix 机器上crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。cronsun 和 Azkaban、Chronos、Airflow 这些不是同一类型的。支持简单的权限管理了
接口文档
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
工具库
xlsx:用来读取 xlsx 文件(即 Excel 文件)
fsnotify:文件夹修改监控工具(Cross-platform file system notifications for Go)
VerifyCode:验证码
Captcha:非常好用的验证码模块,代码库文档齐全,有示例代码,方便学习,推荐大家使用。
Cookie:Advanced cookie library for Go, support signed cookies.
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.支持节假日的计算)
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
微信公众平台/微信企业号/微信商户平台/微信支付