基於Golang的微服務——上手篇

winyh發表於2019-07-12

這一系列文章會記錄我的Golang學習歷程,知識結構可能會很雜亂,也可能會很基礎,但是最終的目標是開發基於Golang的微服務。文章知識很基礎,主要給想嘗試後端技術棧的前端看的,後端大佬別看了,很可能浪費你的時間。歡迎大家一起討論進步,文章標題不代表這篇文章內容...

心路歷程剖析

先說下為啥要寫微服務相關的文章。 從我學Golang這門語言說起吧,自己一直是做前端開發的,平時也會用Node.js和Laravel寫後端專案,但是始終覺得Node.js和PHP去作業系統底層很吃力(個人主觀感受),總想有一門語言可以深入系統底層一點,C語言家族在滿足深入系統底層一點當之無愧的。但是入門時間太久,基本功要求也很高。最後發現了Golang,深入底層,網路開發,Web開發,還有我一直想嘗試的微服務開發都有相應的解決方案。個人覺得自己有幸抓住了網際網路浪潮的尾巴,下一個5G物聯網浪潮可不能錯過,網際網路時代,邊緣計算,分散式,微服務,大資料都是很好的方向。Golang語言作為一個網際網路時代的C語言,可以很好的滿足這些需求。抓住這個機遇,興許可以憑藉Go彎道超車。

Go使用遇到的問題

0.映象檔案下載

這個問題剛開始遇到的時候把自己的學習熱情消磨殆盡,真的是很坑,後來找到了設定代理映象的方式: GOPROXY.IO才算把這坑躺過去。期間也嘗試了很多笨辦法,直接下載 github倉庫的原始碼,結果發現下載的包還有依賴,不停的下載,不停的報依賴錯誤。。。等所有的依賴處理好後黃花菜都涼了。

1.GOPATH

我在安裝完Go後(MAC機器),執行

go env

發現自己的 GOPATH 配置慘不忍睹,設定了很多個路徑,可能是剛開始嘗試Go只顧著網上教程配置,沒有深入理解GOPATH含義,於是想著怎麼讓配置簡單明瞭,最後找到了配置方法。

vim ~./bash_profile

$HOME/go目錄新增到PATH裡面,這一步設定後再檢視GOPATH,可以看到GOPATH值為Users/winyh/go了,後期下載依賴包檔案時會預設下載到 GOPATH(路徑有多個時,如/usr/local/bin:/Users/winyh/go)第一個路徑。

export GOPATH=$HOME/go

$HOME/go/bin新增到PATH,後期可以直接執行 這個目錄下的 命令列

export PATH=$PATH:$HOME/go/bin

2.Go專案目錄設定

在 GOPATH 目錄下新建

bin pkg src

三個資料夾,我們日常開發的原始碼就放在src裡,新建一個專案目錄src/techgo get xxx下載到的依賴包預設下載到 pkg 資料夾下,在 src 下的專案裡執行 go install tech 命令時,生成的二進位制檔案會儲存到 bin 目錄下,切換目錄到 bin , 可以 ./tech 直接執行我們開發好的tech專案。

3.專案包依賴

我選擇的是govendor工具,個人感覺比較好用.

go get -u github.com/kardianos/govendor

具體使用方法可以自己看下文件,因為我經常接觸Node.js 和Laravel,說下我的理解,類比於PHP的Composer, Node.js的 npm ,就是第三方的包依賴管理,在自己專案govendor init會初始化一個 vendor 資料夾和vendor.json包依賴記錄檔案。相當於 LaravelvendorComposer.jsonNode.jspackage.json

4.後記

在嘗試的過程中,一步一步解決問題的感覺還是挺有成就感的,當然也會有煩躁不安的時候,比如被牆了,被新概念困擾了,但是多嘗試幾次不斷試錯之後會問題的根本原因和底層原理會越來越明朗,跨過去就好了,小夥伴們加油!

任何優秀的微服務框架都需要解決這三個基礎問題:

  • 服務發現
  • 同步通訊
  • 非同步通訊

下一篇文章將深入Micro微服務框架預設的服務註冊與發現中心Consul 《基於Golang的微服務——Consul》

相關文章