1.Docker項目
10年積累的成都網(wǎng)站設計、網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有武平免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
網(wǎng)址為 。
介紹:Docker是一種操作系統(tǒng)層面的虛擬化技術(shù),可以在操作系統(tǒng)和應用程序之間進行隔離,也可以稱之為容器。Docker可以在一臺物理服務器上快速運行一個或多個實例。例如,啟動一個Cent OS操作系統(tǒng),并在其內(nèi)部命令行執(zhí)行指令后結(jié)束,整個過程就像自己在操作系統(tǒng)一樣高效。
2.golang項目
網(wǎng)址為 。
介紹:Go語言的早期源碼使用C語言和匯編語言寫成。從Go 1.5版本自舉后,完全使用Go語言自身進行編寫。Go語言的源碼對了解Go語言的底層調(diào)度有極大的參考意義,建議希望對Go語言有深入了解的讀者讀一讀。
3.Kubernetes項目
網(wǎng)址為 。
介紹:Google公司開發(fā)的構(gòu)建于Docker之上的容器調(diào)度服務,用戶可以通過Kubernetes集群進行云端容器集群管理。
4.etcd項目
網(wǎng)址為 。
介紹:一款分布式、可靠的KV存儲系統(tǒng),可以快速進行云配置。
5.beego項目
網(wǎng)址為 。
介紹:beego是一個類似Python的Tornado框架,采用了RESTFul的設計思路,使用Go語言編寫的一個極輕量級、高可伸縮性和高性能的Web應用框架。
6.martini項目
網(wǎng)址為 。
介紹:一款快速構(gòu)建模塊化的Web應用的Web框架。
7.codis項目
網(wǎng)址為 Labs/codis。
介紹:國產(chǎn)的優(yōu)秀分布式Redis解決方案。
8.delve項目
網(wǎng)址為 。
介紹:Go語言強大的調(diào)試器,被很多集成環(huán)境和編輯器整合。
這個項目可以理解為針對互聯(lián)網(wǎng)IT人打造的中文版awesome-go。已有的awesome-go項目, 匯總了很多go開源項目, 但存在的問題是收集太全了, 而且每個項目沒有詳細描述。
本項目作為awesome-go的一個擴展,根據(jù)go語言中文社區(qū)提供的資料,還有互聯(lián)網(wǎng)企業(yè)架構(gòu)設計中的常見組件分類, 共精心挑選了153個開源項目(項目不限于在github開源的項目), 分成以下17個大類。
項目初衷是幫助到那些想學習和借鑒優(yōu)秀golang開源項目, 和在互聯(lián)網(wǎng)架構(gòu)設計時期望快速尋找合適輪子的人。
ps: 以下項目 star數(shù)均大于100 ,且會定期檢查項目的url,剔除無效鏈接。 每個分類下的項目會按照 star數(shù)從高到低 進行排列。
本項目用于移動端的數(shù)據(jù)統(tǒng)計,項目地址: 。開源的數(shù)據(jù)統(tǒng)計countly做的很好,但是基礎免費版的功能實在不夠看,因此我就決定用go語言來寫了這個項目,一來可以在實踐中學習go語言,二來也可以開發(fā)功能完整的開源平臺。該項目正在開發(fā)中,歡迎有興趣的gopher一起參與。
數(shù)據(jù)存儲方面使用的是mongodb。由于數(shù)據(jù)統(tǒng)計業(yè)務幾乎不涉及到事務以及嚴格的一致性場景,而且mongodb的自動分片功能可以支撐較大的數(shù)據(jù)量。使用大數(shù)據(jù)的存儲組件的話就太過于重了。因此選用mongodb。
業(yè)務邏輯整體基于事件的發(fā)布訂閱。當收到客戶端請求, frontend 會對請求數(shù)據(jù)進行處理,然后發(fā)布響應的事件。 backend 收到事件后進行統(tǒng)計處理。
后臺展示基于Vue-Admin-Template開發(fā),本人前端能力基本就是依葫蘆畫瓢,希望有前端大神來開發(fā)后臺頁面,項目地址:
目前客戶端API僅有2個。一個是上報 openApp 打開APP時間,一個是上報 usageTime 一次啟動使用時長事件。SDK方面也需要移動端的大神開發(fā),感興趣的大佬可以一起開發(fā)。
下面放一點后臺頁面的效果圖:
GoAnalytics是基于go實現(xiàn)的一個數(shù)據(jù)統(tǒng)計平臺,用于統(tǒng)計移動端的數(shù)據(jù)指標,比如啟動次數(shù)、用戶增長、活躍用戶、留存等指標分析。前端數(shù)據(jù)展示項目是 goanalytics-web 。目前正在積極開發(fā)中,歡迎提交新的需求和pull request。
Go版本需要支持module,本地開發(fā)測試
cmd/goanalytics_kafka 和 goanalytics_rmq 是分別基于 kafka 和 rocketmq 的發(fā)布訂閱功能做的數(shù)據(jù)發(fā)布
和訂閱處理,橫向擴展能力比 local 高。另外由于 rocketmq 還沒有原生基于 go 的客戶端(原生客戶端正在開發(fā)中
2.0.0 road map ),可能會存在問題。
項目結(jié)構(gòu)
├── README.md
├── api
│ ├── authentication 用戶認證、管理API
│ ├── middlewares GIN 中間件
│ └── router API route
├── cmd
│ ├── account 生成admin賬號命令
│ ├── analytic_local 不依賴消息系統(tǒng)的goanalytics
│ ├── goanalytics_kafka 基于kafak的goanalytics
│ ├── goanalytics_rmq 基于rocketmq的goanalytics
│ └── test_data 生成測試數(shù)據(jù)命令
├── common
│ └── data.go
├── conf 配置
│ └── conf.go
├── event
│ ├── codec 數(shù)據(jù)編解碼
│ └── pubsub 消息發(fā)布訂閱
├── go.mod
├── go.sum
├── metric 所有的統(tǒng)計指標在這里實現(xiàn)
│ ├── init.go
│ └── user 用戶相關(guān)指標的實現(xiàn)
├── schedule
│ └── schedule.go 定時任務調(diào)度
├── storage 存儲模塊
│ ├── counter.go 計數(shù)器接口
│ ├── data.go
│ └── mongodb 基于mongodb實現(xiàn)的存儲及計數(shù)器
└── utils
├── date.go
├── date_test.go
├── errors.go
└── key.go
go語言的官網(wǎng)是
Go語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的復雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發(fā)Go,是因為過去10多年間軟件開發(fā)的難度令人沮喪。
Go是谷歌2009發(fā)布的第二款編程語言。2009年7月份,谷歌曾發(fā)布了Simple語言,它是用來開發(fā)Android應用
Go Logo
的一種BASIC語言.
北京時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。該獎項授予在2009年市場份額增長最多的編程語言。
谷歌資深軟件工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發(fā)效率?!迸煽吮硎?,和今天的C++或C一樣,Go是一種系統(tǒng)語言。他解釋道,“使用它可以進行快速開發(fā),同時它還是一個真正的編譯語言,我們之所以現(xiàn)在將其開源,原因是我們認為它已經(jīng)非常有用和強大。”
2007年,谷歌把Go作為一個20%項目開始研發(fā),即讓員工抽出本職工作之外時間的20%, 投入在該項目上。除了派克外,該項目的成員還有其他谷歌工程師也參與研發(fā)。
派克表示,編譯后Go代碼的運行速度與C語言非常接近,而且編譯速度非???,就像在使用一個交互式語言?,F(xiàn)有編程語言均未專門對多核處理器進行優(yōu)化。Go就是谷歌工程師為這類程序編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是非常困難。Go支持面向?qū)ο?,而且具有真正的閉包(closures)和反射 (reflection)等功能。
在學習曲線方面,派克認為Go與Java類似,對于Java開發(fā)者來說,應該能夠輕松學會 Go。之所以將Go作為一個開源項目發(fā)布,目的是讓開源社區(qū)有機會創(chuàng)建更好的工具來使用該語言,例如 Eclipse IDE中的插件。
在谷歌公開發(fā)布的所有網(wǎng)絡應用中,均沒有使用Go,但是谷歌已經(jīng)使用該語言開發(fā)了幾個內(nèi)部項目。派克表示,Go是否會對谷歌即將推出的Chrome OS產(chǎn)生影響,還言之尚早,不過Go的確可以和Native Client配合使用。他表示“Go可以讓應用完美的運行在瀏覽器內(nèi)。”例如,使用Go可以更高效的實現(xiàn)Wave,無論是在前端還是后臺。
Go 同時具有兩種編譯器,一種是建立在GCC基礎上的Gccgo,另外一種是分別針對64位x64和32位x86計算機的一套編譯器(6g和8g)。谷歌目前正在研發(fā)其對ARM芯片和Android設備的支持。派克表示,“Android手機存在的問題是,我們一直沒有一個數(shù)學協(xié)處理器?!?/p>
PHP:是一種通用開源腳本語言。語法吸收了C語言、Java的特點,利于學習,使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP獨特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。Java:是一種可以撰寫跨平臺應用程序的面向?qū)ο蟮某绦蛟O計語言。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),電子商務大型網(wǎng)站與平臺是電商平臺使用的最好的開發(fā)語言。C#:是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NETFramework之上的高級程序設計語言。并定于在微軟職業(yè)開發(fā)者論壇上登臺亮相。C#是微軟公司研究員的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM是直接集成的,而且它是微軟公司.NETwindows網(wǎng)絡框架的主角。