Go微服務入門到容器化實踐,落地可觀測的微服務電商專案
download:Go微服務入門到容器化實踐,落地可觀測的微服務電商專案
對於真正微服務專案來說,服務開發只是第一步,容器化、彈性伸縮和可觀測才是真正關鍵。本課程將通過電商專案實戰,系統學習完全形態的微服務,掌握成熟閉環的落地方案。
技術要求
有Go實際開發經驗 掌握Linux操作 熟練掌握MySQL
環境引數
開發語言:Golang 開發平臺:Windows 10 開發工具:GoLand
1、Go有什麼優勢
-
可直接編譯成機器碼,不依賴其他庫,glibc的版別有一定要求,佈置便是扔一個檔案上去就完成了。
-
靜態型別言語,可是有動態言語的感覺,靜態型別的言語便是可以在編譯的時分檢查出來躲藏的大多數問題,動態言語的感覺便是有許多的包可以運用,寫起來的功率很高。
-
言語層面支撐併發,這個便是Go最大的特徵,天然生成的支撐併發,我曾經說過一句話,天然生成的基因和整容是有區別的,我們們一樣美麗,可是你喜歡整容的還是天然生成基因的美麗呢?Go便是基因裡邊支撐的併發,可以充分的運用多核,很簡單的運用併發。
-
內建runtime,支撐垃圾收回,這屬於動態言語的特性之一吧,儘管現在來說GC不算完美,可是足以敷衍我們們所能遇到的大多數狀況,特別是Go1.1之後的GC。
-
簡單易學,Go言語的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,可是表達能力很強壯,簡直支撐大多數你在其他言語見過的特性:承繼、過載、物件等。
-
豐厚的規範庫,Go現在現已內建了大量的庫,特別是網路庫十分強壯,我獨愛的也是這部分。
-
內建強壯的東西,Go言語裡邊內建了許多東西鏈,最好的應該是gofmt東西,自動化格式化程式碼,可以讓團隊review變得如此的簡單,程式碼格式如出一轍,想不一樣都很困難。
-
跨渠道編譯,假如你寫的Go程式碼不包括cgo,那麼就可以做到window體系編譯linux的運用,如何做到的呢?Go引用了plan9的程式碼,這便是不依賴體系的資訊。
-
內嵌C支撐,前面說了作者是C的作者,所以Go裡邊也可以直接包括c程式碼,運用現有的豐厚的C庫。
2、Go適合用來做什麼
-
伺服器程式設計,以前你假如運用C或許C++做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案體系等。
-
分散式體系,資料庫代理器等
-
網路程式設計,這一塊現在運用最廣,包括Web運用、API運用、下載運用、
-
記憶體資料庫,前一段時間google開發的groupcache,couchbase的部分組成
-
雲渠道,現在國外許多雲渠道在選用Go開發,CloudFoundy的部分組成,前VMare的技術總監自己出來搞的apcera雲渠道。
3、Go成功的專案
nsq:bitly開源的音訊行列體系,效能十分高,現在他們每天處理數十億條的音訊
docker:根據lxc的一個虛擬打包東西,可以完成PAAS渠道的組成。
packer:用來生成不同渠道的映象檔案,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分散式排程結構
Doozer:分散式同步東西,類似ZooKeeper
Heka:mazila開源的日誌處理體系
cbfs:couchbase開源的分散式檔案體系
tsuru:開源的PAAS渠道,和SAE完成的功能如出一轍
groupcache:memcahe作者寫的用於Google下載體系的快取體系
god:類似redis的快取體系,可是支撐分散式和擴充套件性
gor:網路流量抓包和重放東西
以下是一些公司,只是一小部分:
-
http://Apcera.com
-
http://Stathat.com
-
Juju at Canonical/Ubuntu, presentation
-
http://Beachfront.iO at Beachfront Media
-
CloudFlare
-
Soundcloud
-
Mozilla
-
Disqus
-
http://Bit.ly
-
Heroku
-
google
-
youtube
下面列出來了一些運用的使用者
GoUsers - go-wiki - A list of organizations that use Go.
4、Go還存在的缺陷
以下缺陷是我自己在專案開發中遇到的一些問題:
-
Go的import包不支撐版別,有時分晉級簡單導致專案不行運轉,所以需要自己控制相應的版別資訊
-
Go的goroutine一旦發動之後,不同的goroutine之間切換不是受程式控制,runtime排程的時分,需要嚴謹的邏輯,否則goroutine休眠,過一段時間邏輯結束了,忽然冒出來又執行了,會導致邏輯出錯等狀況。
-
GC推遲有點大,我開發的日誌體系傷過一次,同時併發很大的狀況下,處理很大的日誌,GC沒有那麼快,記憶體收回不給力,後來通過profile程式改進之後得到了改善。
-
pkg下面的圖片處理庫許多bug,還是運用成熟產品好,呼叫這些成熟庫imagemagick的介面比較靠譜
相關文章
- 阿里云云原生微服務可觀測實踐阿里微服務
- .Net微服務實戰之可觀測性微服務
- 微服務專案實踐之中建專案微服務
- go-kit 微服務實踐Go微服務
- go微服務系列(一) go micro入門Go微服務
- 教你玩轉微服務--基於DDD的微服務架構落地實踐之路微服務架構
- go微服務系列(四) - gRPC入門Go微服務RPC
- 淺談微服務的發展以及可觀測性微服務
- 微服務如何落地微服務
- 基於容器雲的微服務架構實踐微服務架構
- 小白入門微服務(0) - 什麼是微服務微服務
- Java 微服務實踐Java微服務
- go微服務Go微服務
- go 微服務Go微服務
- 微服務進階之路 容器落地避坑指南微服務
- 微服務實戰(九):落地微服務架構到直銷系統(回顧總結)微服務架構
- Go微服務實踐之增刪改查Go微服務
- 測試微服務的4個最佳實踐微服務
- 快速入門一篇搞定RocketMq-實現微服務實戰落地MQ微服務
- Serverless 下的微服務實踐Server微服務
- 今日頭條Go建千億級微服務的實踐Go微服務
- 微服務治理平臺產品化實踐與應用微服務化解析微服務
- .Net Core微服務入門全紀錄(一)——專案搭建微服務
- go proto 微服務Go微服務
- Docker+Kubernetes(k8s)微服務容器化實踐DockerK8S微服務
- 最簡單的微服務部署測試實踐微服務
- Go語言微服務開發框架實踐-go chassis(中篇)Go微服務框架
- Go語言微服務開發框架實踐-go chassis(上篇)Go微服務框架
- Go+MongoDB的微服務實戰MongoDB微服務
- 微服務:服務化框架落地的挑戰和核心需求微服務框架
- 網易蜂巢:基於容器和微服務迭代加速實踐微服務
- 某大型運營商微服務能力中臺落地實踐微服務
- 微服務實戰(七):落地微服務架構到直銷系統(實現命令與命令處理器)微服務架構
- 關於微服務入門篇微服務
- 微服務入門權威指南微服務
- Java微服務 vs Go微服務,究竟誰更強!?Java微服務Go
- 設計微服務的最佳實踐微服務
- go微服務框架go-micro深度學習(二) 入門例子Go微服務框架深度學習