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

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

心路歷程剖析

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

Go使用遇到的問題

0.鏡像文件下載

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

1.GOPATH

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

go envjson

發現本身的 GOPATH 配置慘不忍睹,設置了不少個路徑,多是剛開始嘗試Go只顧着網上教程配置,沒有深刻理解GOPATH含義,因而想着怎麼讓配置簡單明瞭,最後找到了配置方法。vim

vim ~./bash_profile後端

$HOME/go目錄添加到PATH裏面,這一步設置後再查看GOPATH,能夠看到GOPATH值爲Users/winyh/go了,後期下載依賴包文件時會默認下載到 GOPATH(路徑有多個時,如/usr/local/bin:/Users/winyh/go)第一個路徑。bash

export GOPATH=$HOME/gomarkdown

$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》

相關文章
相關標籤/搜索