2020年馬哥Go運維開發架構師學習路線圖共八個階段的學習:GO核心編程--數據庫處理--Web開發框架--多雲管理平臺--用戶管理平臺--監控報警系統--發佈系統--Docker與K8S。git
本文爲第一階段:GO核心編程,剩餘階段的學習路線圖、學習教程整理在後續三篇文章裏。程序員
Go語言:出身名門的後起之秀github
Go語言2009年誕生於谷歌,由計算機領域的三位宗師級大牛Rob Pike、Ken Thomp-son 和 Robert Griesemer寫成。因爲出身名門,Go在誕生之初就吸引了大批開發者的關注。
Go語言在語法上與C語言相似,但它增長了內存安全、垃圾回收、結構形態和CSP-style
併發計算等優勢。最重要的是,Go 語言是專爲提升多核、聯網計算機和大型代碼庫的工做效率而設計的,可幫助程序員快速擴展軟件開發和部署。golang
Go語言優點:將來可期面試
Go 在全球擁有上百萬用戶,他們遍及各個行業、經驗領域和工程學科。Go 語言具備語法簡潔明瞭、使用容易、格式簡單、速度快等優勢,這使它成爲發展最迅速的語言之一。此外,它還有一個繁榮的開源社區。docker
隨着 Go 的使用量不斷增加,愈來愈多的基礎服務也隨之創建。基於 Go 構建的熱門開源應用包括Docker
、Hugo
、Kubernetes
。Google 的混合雲平臺Anthos
也是基於Go構建而成。數據庫
Go最初用於支持大量Google服務和基礎架構。現在,Go不只僅在美國應用普遍,在國內落地日趨成熟,阿里、京東、搜狗、美團等一線大廠的技術團隊在各自公衆號上都有相關的分享,感興趣的小夥伴能夠找來看看。
互聯網基礎設施表明項目:以太坊、hyperledger等。採用Go的一些國外公司,如Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司;採用Go開發的國內企業:如阿里雲CDN、百度、小米、七牛、PingCAP、華爲、金山軟件、獵豹移動、餓了麼等公司。編程
Facebook也在用,爲此他們還專門在Github上創建了一個開源組織facebookgo,你們能夠經過https://github.com/facebookgo...,好比著名的是平滑升級的grace。後端
騰訊做爲國內的大公司,仍是勇於嘗試的,尤爲是Docker容器化這一塊,他們在15年已經作了DocKer萬臺規模的實踐。七牛雲存儲
小米對Golang的支持,莫過於運維監控系統的開源,也就是 http://open-falcon.com/ 。此外,小米互娛、小米商城、小米視頻、小米生態鏈等團隊都在使用Golang。
360對Golang的使用也很多,一個是開源的日誌搜索系統Poseidon,託管在Github上,還有360的推送團隊也在使用,他們還寫了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。
美團利用Go語言作後臺流量支撐程序。應用範圍包括支撐主站後臺流量(排序,推薦,搜索等),提供負載均衡,cache,容錯,按條件分流,統計運行指標(qps,latency)等功能。
今日頭條當先後端 服 務 超 過80%的流量是跑在Go構建的服務上微服務數量超
過100個,高峯QPS超過700萬,日處理請求量超過3000億,多是業內最大規模的Go應用。
還有不少,好比阿里中間件、百度、京東雲、滴滴、金山微看、新浪微博、愛奇藝、網易、嗶哩嗶哩、聚美優品、高升控股、探探、鬥魚直播、人人車、亞信、Udesk、方付通、招財貓、三一集團、美餐網等。通常的選擇,都是選擇用於本身公司合適的產品系統來作,好比消息推送的、監控的、容器的等,Golang特別適合作網絡併發的服務,這是他的強項,因此也是被優先用於這些項目。Go語言做爲一門大型項目開發語言,在不少大公司相繼使用,甚至徹底轉向Go開發。
Top1:程序員最想學習的編程語言
招聘網站是行業的晴雨表,今年咱們發現,像知乎、bilibili往Go遷移,涌現出的Go開發招聘愈來愈多。相反,以前一直很火熱的Python開發招聘數量卻減小了。
IT行業大揭祕:2020最受歡迎的十大崗位是什麼?薪資水平又如何呢?
HackerRank 是聚集了超過500萬開發人員(佔全球開發人員總數的20%以上)和1200多個客戶的平臺。HackerRank 在社區發起了程序員技能調查問卷,來自100多個國家、超過70000名開發者參與其中。
Go語言的應用領域
早期的Go語言開源項目只是經過Go語言與傳統項目進行C語言庫綁定實現,例如Qt、Sqlite等;後期的不少項目都使用Go語言進行從新原生實現,這個過程相對於其餘語言要簡單一些,這也促成了大量使用Go語言原生開發項目的出現。
雲計算基礎設施領域表明項目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛雲存儲等。
基礎軟件表明項目:tidb、influxdb、cockroachdb等。
微服務表明項目:go-kit、micro、monzo bank的typhon、bilibili等。
Docker 是一種操做系統層面的虛擬化技術,能夠在操做系統和應用程序之間進行隔離,也能夠稱之爲容器。Docker 能夠在一臺物理服務器上快速運行一個或多個實例。基於lxc的一個虛擬打包工具,可以實現PAAS平臺的組建。例如,啓動一個 CentOS 操做系統,並在其內部命令行執行指令後結束,整個過程就像本身在操做系統同樣高效。
項目連接:https://github.com/docker/docker
KubernetesGoogle 公司開發的構建於 Docker 之上的容器調度服務,用戶能夠經過 Kubernetes 集羣進行雲端容器集羣管理。
項目連接:https://github.com/kubernetes...
etcd一款分佈式、可靠的 KV 存儲系統,能夠快速進行雲配置。
項目連接:https://github.com/coreos/etcd
beegobeego 是一個相似 Python的 Tornado 框架,採用了 RESTFul 的設計思路,使用 Go 語言編寫的一個極輕量級、高可伸縮性和高性能的 Web 應用框架。
項目連接:https://github.com/astaxie/beego
martini一款快速構建模塊化的 Web 應用的 Web 框架。項目連接:https://github.com/go-martini...
codis國產的優秀分佈式 Redis 解決方案。項目連接:https://github.com/CodisLabs/...
1、Go語言基礎編程
瞭解GO語言歷史及特色,學習GO開發環境搭建及工具鏈使用,掌握Go基本語法、Go面向對象語法、Go對IO操做等。
(一)技術要點
1.Go的發展歷史
2.Go開發環境搭建
3.Go程序結構介紹
4.變量聲明&賦值
5.基本數據類型定義&操做
7.Go語言流程控制
8.複合數據類型定義&操做
9.Go的函數定義&調用
10.Go語言中的錯誤處理方法
11.Go語言中包定義&導入
12.結構體定義與面向對象編程
13.Go語言的方法聲明
14.變量/屬性/方法可見性
15.Go的文件與IO操做
16.Go語言的編碼和解碼
17.Go的接口介紹與使用
18.反射的原理與使用
(二)解鎖實戰
1.完成猜數字遊戲
2.完成訪問日誌統計,每一個IP出現次數,每一個狀態碼出現次數
2、Go進階併發編程
(一)技術要點
1.Goroutine的介紹與實戰
2.閉包陷阱
3.計數信號量
4.讀寫鎖與互斥鎖
5.原子操做
6.管道(帶緩衝器管道、讀寫管道)
7.多路複用
8.定時器/延遲器
9.runtime包經常使用函數解析
(二)解鎖實戰
1.初步掌握併發編程要點
2.掌握生產者/消費者模型
3、Go進階網絡編程
瞭解網絡編程,熟悉HTTP協議、遠程方法調用RPC及實現方式,掌握TCP,UDP服務器、客戶端開發、Go WEB編程、Go WEB client開發等。
(一)技術要點
1.Socket介紹
2.TCP,UDP服務器和客戶端開發介紹
3.HTTP協議介紹
4.遠程方法調用RestAPI,RPC介紹
5.WEB編程處理器介紹
6.HTML及模板介紹
(二)解鎖實戰
1.命令行端對端聊天系統
2.簡單文件服務
3.完成命令行用戶管理功能(實現登陸 、查詢 、添加 、修改 、刪除功能,使用文件存儲數據)
4.完成命令行端對端聊天系統
※部分文章來源於網絡,若有侵權請聯繫刪除;更多文章和資料|點擊後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南] CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分佈式監控系統源碼文檔
10G大廠面試題戳領