有哪些值得學習的 Go 語言開源項目?


我個人認為兩個開源項目非常值得學習,一個是nsq,一個是skynet,對於我們認識channel、分散式開發都有很大的幫助


可以看到,今年穀歌家的 Go 編程語言流行度有著驚人的上升趨勢,其發展也是越來越好,因此本文整理了一些優秀的 Go 存儲相關開源項目和庫,一起分享,一起學習。

存儲伺服器(Storage Server)

Go 實現的存儲伺服器

  • minio - Minio 是一個與 Amazon S3 APIs 兼容的開源對象存儲伺服器,分散式存儲方案
  • rclone - 「用於雲存儲的 Rsync」 - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile…
  • camlistore - Camlistore 是你的個人存儲系統:一種存儲、同步、共享、建模和備份內容的方式
  • torus - CoreOS 的現代分散式存儲系統
  • s3git - 雲存儲的 Git。用於數據的分散式版本控制系統
  • rook - 開放、雲本地和通用的分散式存儲

Key-Value 存儲(Key-Value Store)

Go 實現的 Key-Value 存儲

  • etcd - 可靠的分散式 key-value 存儲,用於分散式系統的最關鍵數據
  • go-cache - Go 語言實現的一個內存中的緩存框架,實現 Key-Value 的序列存儲,適用於單台機器應用程序
  • biscuit - Biscuit 用於 AWS 基礎架構建設時多區域 HA key-value 存儲
  • diskv - 支持磁碟的 key-value 存儲

文件系統(File System)

Go 實現的文件系統

  • git-lfs - 用於大文件版本控制的 Git 擴展
  • seaweedfs - SeaweedFS 是一個用於小文件的簡單且高度可擴展的分散式文件系統
  • fsnotify - Go 實現的跨平台文件系統監控庫
  • goofys - Go 實現的高性能,POSIX-ish Amazon S3 文件系統
  • go-systemd - systemd 的 Go 語言綁定版(包括socket activation, journal, D-Bus, 和 unit files)
  • gcsfuse - 用於與 Google 雲存儲交互的用戶空間文件系統
  • svfs - 基於 Openstack 的虛擬文件系統

資料庫(Database)

Go 實現的資料庫

  • BigCache - 用於千兆位元組數據的高效 key/value 緩存
  • bolt - Go 實現的低層級的 key/value 資料庫
  • buntdb - 一個 Go 實現的快速、可嵌入的 key/value 內存資料庫,具有自定義索引和 geospatial 支持的功能
  • cache2go - key/value 內存緩存,支持基於超時的自動無效功能
  • cockroach - 一個可伸縮的、支持地理位置處理、支持事務處理的數據存儲系統
  • couchcache - 由 Couchbase 伺服器支持的 RESTful 緩存微服務
  • dgraph - 具有可擴展、分散式、低延遲和高吞吐量功能的圖形資料庫
  • eliasdb - 使用 REST API,短語搜索和類似 SQL 查詢語言的無依賴性,支持事務處理的圖形資料庫
  • forestdb - Go bindings for ForestDB.Go 語言綁定版的 ForestDB
  • GCache - 支持可用緩存、LFU、LRU 和 ARC 的緩存資料庫
  • geocache - An in-memory cache that is suitable for geolocation based applications.適用於 地理位置處理基於應用程序的內存緩存
  • goleveldb - An implementation of the LevelDB key/value database in the Go.Go 實現的 LevelDB key/value 資料庫
  • groupcache - Groupcache 是一個緩存和緩存填充庫,在許多情況下用於替代 memcached
  • influxdb - 開源的分散式指標、事件和實時分析的可擴展資料庫
  • ledisdb - 基於 LevelDB 類似 Redis 的高性能 NoSQL 資料庫
  • levigo - 用於 LevelDB 的 Go 封裝包
  • moss - Go 實現的簡單 LSM key-value 存儲引擎
  • piladb - 基於堆棧數據結構的輕量級 RESTful 資料庫引擎
  • pREST - 為任何來自 PostgreSQL 的資料庫提供一個 RESTful API
  • prometheus - 服務監控系統和時間序列資料庫
  • rqlite - 基於 SQLite 構建的輕量級、分散式關係資料庫
  • scribble - 一個小型的 Flat File JSON 存儲
  • tidb - TiDB 是一個分散式 SQL 資料庫,靈感來自於 Google F1 和 Google spanner。TiDB 支持包括傳統 RDBMS 和 NoSQL 的特性。
  • tiedot - 基於 Go 的 NoSQL 資料庫
  • Tile38 - 具有空間索引和實時地理圍欄的地理位置資料庫

資料庫遷移

  • darwin - Go 實現的資料庫 schema 演進庫
  • goose - 資料庫遷移工具。可通過創建增量 SQL 或 Go 腳本來管理資料庫的演變
  • gormigrate - Gorm ORM 的資料庫遷移助手
  • migrate - Go 實現的資料庫遷移處理,支持 MySQL, PostgreSQL, Cassandra, 和 SQLite
  • pravasan - 簡單的遷移工具,目前支持 MySQL,PostgreSQL,但計劃很快支持 SQLite, MongoDB 等
  • soda - 具有資料庫遷移、創建和 ORM 等功能,適用於 MySQL, PostgreSQL, 和 SQLite
  • sql-migrate - 資料庫 schema 遷移工具。允許使用 go-bindata 將遷移嵌入到應用程序中

資料庫工具

  • go-mysql - Go 實現的用於處理 MySQL 協議和複製的工具集
  • go-mysql-elasticsearch - 將 MySQL 數據自動同步到 Elasticsearch 中
  • kingshard - Go 實現的高性能 MySQL Proxy 項目
  • myreplication - MySQL 二進位日誌複製監聽器。支持語句和基於行的複製
  • orchestrator - MySQL 複製拓撲管理器和可視化工具
  • pgweb - Go 實現的基於 Web 的 PostgreSQL 資料庫管理系統
  • vitess - 分散式 MySQL 工具集。vitess 提供了伺服器和工具,以便於大規模 Web 服務的 MySQL 資料庫擴展

SQL 查詢構建器,用於構建和使用 SQL 的庫

  • dat - Go 實現的 Postgres 數據訪問工具包
  • Dotsql - Go 語言實現的庫,可幫助你將 sql 文件保存至某個地方並輕鬆使用它
  • goqu - Go 實現的 SQL 構建器和查詢庫
  • igor - PostgreSQL 的抽象層,支持高級功能並使用類似 Gorm 的語法
  • ozzo-dbx - 強大的數據檢索方法以及 DB-agnostic 查詢構建功能
  • scaneo - 生成 Go 代碼以將資料庫行轉換為任意結構
  • sqrl - SQL 查詢構建器,Squirrel 的 fork 具有更好的性能
  • Squirrel - 幫助你構建 SQL 查詢的 Go 庫
  • xo - 基於現有 schema 定義或支持 PostgreSQL,MySQL,SQLite,Oracle 和 Microsoft SQL Server 的自定義查詢生成資料庫的慣用 Go 代碼

資料庫驅動

用於連接和操作資料庫的庫

關係資料庫

  • bgc - Go 實現的用於 BigQuery 的數據存儲連接
  • firebirdsql - Firebird RDBMS SQL 驅動
  • go-adodb - Microsoft ActiveX Object 資料庫驅動,使用 database/sql
  • go-bqstreamer - BigQuery 快速並發流插入
  • go-mssqldb - Microsoft MSSQL 驅動
  • go-oci8 - Oracle 驅動,使用 database/sql
  • go-sql-driver/mysql - MySQL 驅動
  • go-sqlite3 - SQLite3 驅動,使用 database/sql
  • gofreetds - Microsoft MSSQL 驅動。Go wrapper over FreeTDS.
  • pgx - PostgreSQL 驅動
  • pq - Go 實現的用於 database/sql 的 Postgres 驅動

NoSQL 資料庫

  • aerospike-client-go - Go 實現的 Aerospike 客戶端
  • arangolite - Go 實現的 ArangoDB 輕量級驅動程序
  • asc - 用於 Aerospike 的數據存儲連接
  • cayley - 支持多個後端的圖形資料庫
  • dsc - 用於 SQL, NoSQL 以及結構化文件的數據存儲連接
  • dynago - DynamoDB 的客戶端
  • go-couchbase - Go 實現的 Couchbase 客戶端
  • go-couchdb - Go 實現的 CouchDB HTTP API 封裝包
  • gocb - 官方的 Couchbase Go SDK 包
  • gocql - Go 實現的 Apache Cassandra 驅動
  • gomemcache - memcache 客戶端庫
  • gorethink - RethinkDB 驅動
  • goriak - Riak KV 驅動
  • mgo - MongoDB 驅動,它根據標準 Go 習慣用法在非常簡單的 API 下實現豐富且經過良好測試的功能選擇
  • neo4j - Neo4j Rest API 綁定
  • Neo4j-GO - Neo4j REST 客戶端
  • neoism - Neo4j client 客戶端
  • redigo - Redis 資料庫客戶端
  • redis - Redis 客戶端
  • redis - 簡單強大的 Redis 客戶端
  • redis - Redis 協議兼容 TCP servers/services

搜索和分析資料庫

  • bleve - 現代文本索引庫
  • elastic - Elasticsearch 客戶端
  • elastigo - Elasticsearch 客戶端庫
  • goes - 與 Elasticsearch 交互的庫
  • skizze - A probabilistic data-structures service and storage.數據結構服務和存儲

來自:gostor/awesome-go-storage: A curated list of awesome Go storage projects and libraries


學習 real-world go 代碼我最推崇的還是相當可讀的 go 標準庫源碼,不過既然有機會還是來廣告一發:

elves/elvish · GitHub 是一個用 go 實現的實驗性的 Unix shell,主要亮點:

  • UI:在 shell 中喚出類似於 ranger 的「navigation mode」(見配圖);真·可編程 line editor(編程介面還沒實現我會亂說么)
  • 語義:可嵌套的真·數組、真·字典、傳遞獨立對象的增強型管道、閉包、模塊機制、可選的靜態類型檢查

目前處於開發階段,但是相當有潛力(毫不臉紅)。elvish 代碼不大,目前有 7234 行。代碼結構清晰,讀起來障礙不大。


自帶的包的源碼就很好


MQ方面有nsq;Web方面有revel和beego;skynet我剛剛知道,還沒來得及看。另外在雲計算方面有docker,這個東西也是很給力的,值得研究。我說的這些都在github上,可以自取。


推薦一個消息隊列nats,它是實時消息隊列,非常不錯哦。


看過awesome-go項目, 匯總了很多go開源項目。 但是awesome-go收集了太全了, 而且每個項目沒有描述。 因此我自己根據go語言中文社區提供的資料,還有互聯網企業架構設計中的常見組件分類, 共精心挑選了100多個開源項目(項目不限於在github開源的項目), 分成以下十幾個大類。 這個項目可以理解為互聯網IT人打造的中文版awesome-go。這個項目初衷是幫助到那些想學習和借鑒優秀golang開源項目, 和在互聯網架構設計時期望快速尋找合適輪子的人。

項目地址: https://github.com/hackstoic/golang-open-source-projects

- 監控系統

- 容器技術

- PaaS工具

- 大數據

- 資料庫技術

- 存儲技術

- 分散式系統

- 消息系統

- 伺服器管理

- 安全工具

- 網路工具

- Web工具

- Web框架

- 區塊鏈技術

- 其它

歡迎提issue反饋建議。 如果你覺得有用, 記得在github上給我點個star 哦,給我更大的動力去更新這個項目~~~~


robfig/revel · GitHub

astaxie/beego · GitHub

go-sql-driver/mysql 路 GitHub

https://github.com/paulbellamy/mango

dustin/gomemcached 路 GitHub


bradfitz(memcached開發者)寫的Groupcache

groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases. https://github.com/golang/groupcache


謝邀,推薦最近平台上正在整理的」可能是本土最火的開源項目「 Go 系列,都是優質的開源項目,希望對題主有所幫助,也供大家一起交流學習。

1. 項目名稱:極易搭建的自助 Git 服務 Gogs

項目簡介:Gogs 是一款極易搭建的自助 Git 服務,目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助 Git 服務。使用 Go 語言開發使得 Gogs 能夠通過獨立的二進位分發,並且支持 Go 語言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

項目地址:無聞/gogs - 碼雲 Gitee.com

2. 項目名稱:JetBrains 的 Go 開發工具 Gogland

項目簡介:Gogland 是 JetBrains 公司推出的 Go 語言集成開發環境。Gogland 同樣基於 IntelliJ 平台開發,支持 JetBrains 的插件體系。

項目地址:JetBrains 的 Go 開發工具

3. 項目名稱:內網穿透工具 frp

項目簡介:frp 是一個高性能的反向代理應用,可以幫助您輕鬆地進行內網穿透,對外網提供服務,支持 tcp, http, https 等協議類型,並且 web 服務支持根據域名進行路由轉發。

項目地址:frp首頁、文檔和下載 - 內網穿透工具 - 開源中國社區

4. 項目名稱:實時消息通信平台 Centrifugo

項目簡介:Centrifugo 是一個用 Golang 實現的基於 Websocket 或者 SockJS 的實時通信平台。

  • 支持數千個同時連接,提供基於頻道的出版/訂閱模式。PUB/SUB
  • 容易和現有系統集成– 不改變已有後端情況下為系統提供實時通信能力。
  • HTTP API 和已有後端通信 . API clients for Python, Ruby, PHP, Go, NodeJS.
  • 瀏覽器可以通過SockJS或者純粹Websocket協議和centrifugal通信. 提供 iOS和Android平台SDK
  • 採用Redis實現分散式部署.
  • SHA-256 HMAC連接認證和隱私保護
  • 多種類型的頻道 – 私有, 用戶限制,客戶端限制
  • 通過名字空間靈活配置頻道
  • 支持即時消息和歷史消息
  • 支持用戶加入/離開消息
  • 網路重連後可以恢復消息
  • 內置管理界面,提供多種計量(Metrics)
  • 可用於WebRTC信令伺服器
  • 多種部署手段(docker 鏡像, RPM/DEB 包, Nginx 配置, TLS certificates)
  • MIT license

項目地址:Centrifugo首頁、文檔和下載 - 實時消息通信平台 - 開源中國社區

5. 項目名稱:Go Web API 利器 Faygo

項目簡介:Faygo 使用全新架構,是最合適開發API介面的Go Web框架。用戶只需定義一個struct Handler,就能自動綁定、驗證請求參數並生成在線API文檔。

項目地址:henrylee2cn/faygo - 碼雲 Gitee.com

6. 項目名稱:分散式RPC服務框架 rpcx

項目簡介:rpcx是一個類似阿里巴巴 Dubbo 和微博 Motan 的分散式的RPC服務框架,基於Golang net/rpc實現。rpcx的目標就是實現一個Go生態圈的Dubbo,為Go生態圈提供一個分散式的、多插件的、帶有服務治理功能的產品級的RPC框架。

項目地址:Star 用戶 · 碼雲極速下載/rpcx

7. 項目名稱:HTTP反向代理、負載均衡軟體 Traefik

項目簡介:r?f?k 是一個新型的http反向代理、負載均衡軟體,能輕易的部署微服務. 它支持多種後端 (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) ,可以對配置進行自動化、動態的管理.

項目地址:碼雲極速下載/traefik - 碼雲 Gitee.com

碼雲 http://Gitee.com

發現更多優質開源項目:最新推薦 - 碼雲 - 開源中國

團隊流暢、高效開發:碼雲企業版 - 碼雲 - 開源中國


分散式文件存儲 https://github.com/chrislusf/seaweedfs


推薦下自家產品,這是我們第二個完成用go做的產品。

QOR - Go語言寫的模塊化電商系統和CMS,已開源

QOR官方網站:QOR: E-commerce CMS SDK written in Go


Github地址:qor/qor · GitHub


演示demo:Admin
- Qor DEMO

雖然已經上線,但是目前仍處於開發階段,N多模塊還在排隊等候開發,希望大家多多交流,多多提意見。


推薦下groupcache,寥寥2000來行代碼完成了個lru cache庫,核心只用一個list和一個map,出自brad大神之手(memcached作者)


Projects -
go-wiki -

A list of Go projects.


個人認為, 無論學習什麼語言, 最好都要掌握與 C/C++ 代碼通信的技巧. 永遠無法否認的事實是,C 系代碼擁有目前而言最好的性能與最強大的功能。

Mohanson/FaceDetectionServer

這是個人實現的使用 Go 與 C++ 混編的項目. 其中 C++ 代碼完成了人臉識別核心模塊與膠水部分, Go 代碼完成了 HTTP 服務. 雖然是個不知名項目, 但個人認為值得一瞅( 指 C++ 膠水部分 )


astaxie/build-web-application-with-golang · GitHub


codegangsta/negroni · GitHub

很小的項目,精緻,簡單易懂.半小時內絕對能看完.


docker


dropbox 開源的基礎類庫:

dropbox/godropbox · GitHub


Mozilla"s Heka


推薦閱讀:

Windows 使用了哪些第三方的開源軟體?
2014年值得推薦的開源硬體產品 top10有哪些?
用心開發了一套付費 wordpress 主題,被吐槽:都什麼時代了,還不開源,收個毛錢,我錯了嗎?
有很多人因為長期使用 Linux 而對 Windows 增加反感嗎,為什麼?
GitHub 上有哪些適合新人圍觀的 Android 項目?

TAG:學習 | 開源 | 開源項目 | Go語言 |