有哪些值得學習的 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(編程介面還沒實現我會亂說么)
- 語義:可嵌套的真·數組、真·字典、傳遞獨立對象的增強型管道、閉包、模塊機制、可選的靜態類型檢查
自帶的包的源碼就很好
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 · GitHubastaxie/beego · GitHubgo-sql-driver/mysql 路 GitHubhttps://github.com/paulbellamy/mangodustin/gomemcached 路 GitHub
bradfitz(memcached開發者)寫的Groupcachegroupcache 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 項目?