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
微信公眾平台/微信企業號/微信商戶平台/微信支付
https://github.com/philsong/wechat2
