Golang微服務(wù)micro學(xué)習(xí)記錄之快速開始

一、下載安裝

官方給的步驟:

go get -u github.com/micro/micro

//Or via Docker
//docker pull microhq/micro

我呢是在Windows上面學(xué)習(xí),沒有使用docker,因此使用第一種方法。不過使用中遇到了一點(diǎn)問題:

package golang.org/x/net/ipv4: directory "E:\\go\\Projects\\src\\golang.org\\x\\net\\ipv4" is not using a known version control system
package golang.org/x/net/ipv6: directory "E:\\go\\Projects\\src\\golang.org\\x\\net\\ipv6" is not using a known version control system
package golang.org/x/crypto/acme/autocert: unrecognized import path "golang.org/x/crypto/acme/autocert" (https fetch: Get https://golang.org/x/crypto/acme/autocert?go-get=1: dial tcp 216.239.37.1:443: connectex: A
 connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)

前三個呢暫時不管,最后一個是golang.org包里面沒有autocert這個包,被墻了下載不了,自己到網(wǎng)上下載,比如下載整個crypto包然后手動移動,鏈接https://github.com/golang/crypto在這里。
好,已安裝完畢。

二、安裝依賴
The micro toolkit has two dependencies:

*   [Service Discovery] - used for name resolution
*   [Protobuf] - used for code generation

按照官方的說法,micro要使用兩個依賴,一個是Service Discovery,一個是Protobuf;第一個是服務(wù)發(fā)現(xiàn),微服務(wù)呢使用了這個功能,也就是自動注冊服務(wù)并且自動被發(fā)現(xiàn),啥意思呢,就是你增加一個服務(wù)提供給用戶,原來呢我們要手動調(diào)整原來的接口,調(diào)整負(fù)載等,但是有Service Discovery這個東西呢就自動化幫助我們做這些事,如下表(來自這里):

注冊發(fā)現(xiàn)模式

然后第二個依賴是Protobuf,就是類似json轉(zhuǎn)換的序列化工具。
下面說說這兩個依賴怎么安裝使用。

1、Service Discovery

這里使用默認(rèn)的consul,這里是下載地址,下載相應(yīng)版本,解壓后

consul

然后將此文件夾加入環(huán)境變量,方便我們在任何地方都能直接調(diào)用consul命令啟動consul,當(dāng)然也可以不加,那么每次啟動都要進(jìn)入該文件夾下啟動。
使用命令:

consul agent -dev

即可開啟consul的監(jiān)聽,這里只在一臺電腦上開啟微服務(wù),那么暫時不用使用consul的其它命令,如果要在多臺電腦遠(yuǎn)程開啟多個微服務(wù),或者使用docker開啟多個微服務(wù),就需要了解consul的命令了,這個我們后面再詳細(xì)說。

2、Protobuf

Protobuf是啥呢,就是類似json、xml一樣的東西,是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式,但是它需要專門的工具來生成,方便我們快速開發(fā)。安裝包在這里
https://github.com/google/protobuf/releases
我們可以在這里下載Windows下的壓縮包,解壓加環(huán)境變量即可使用exe文件來使用Protobuf的生成工具了。下面是解壓后的文件夾:

protoc文件夾.png

將bin文件夾加入環(huán)境變量,或者里面的protoc.exe路徑加入環(huán)境變量,這個exe文件就是我們轉(zhuǎn)換protobuf的工具。
然后我們使用一些golang對于protobuf的工具,go get相應(yīng)的庫


# install protoc-gen-go
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

# install protoc-gen-micro
go get -u github.com/micro/protoc-gen-micro

用于自動化生成go-protobuf和go-micro需要的代碼文件,使用這些工具將會非常方便。

三、運(yùn)行測試(一)

先進(jìn)入這個文件夾github.com/micro/micro,

cd GOPATH/src/github.com/micro/micro

然后執(zhí)行g(shù)o build或者直接

go build GOPATH/src/github.com/micro/micro

將在 GOPATH/bin文件夾下生成micro.exe文件,將GOPATH/bin文件夾路徑加入環(huán)境變量后我們就可以直接運(yùn)行micro命令了,如果沒有在bin文件夾生成那么手動移到該文件夾。
然后使用下面的命令來自動生成代碼

micro new github.com/micro/example

也可以不這樣生成,可以生成到自己目錄下

micro new hdy/micro/example

那么生成的項目就在GOPATH/src/hdy/micro/example

example/
    Dockerfile  # A template docker file
    README.md   # A readme with command used
    handler/    # Example rpc handler
    main.go     # The main Go program
    proto/      # Protobuf directory
    subscriber/ # Example pubsub Subscriber

然后進(jìn)入項目文件夾

cd GOPATH/src/hdy/micro/example

運(yùn)行下面的代碼生成protobuf和micro代碼文件

protoc --proto_path=. --micro_out=. --go_out=. proto/example/example.proto

然后就是一個完整的微服務(wù)項目了,請注意:

請確保已經(jīng)新開窗口運(yùn)行 consul agent -dev
//運(yùn)行微服務(wù)時會向consul注冊這個微服務(wù),因此要先運(yùn)行consul

最后:

go run main.go

OK,順利運(yùn)行第一個微服務(wù)。

四、運(yùn)行測試(二)

運(yùn)行下面的代碼:

micro list services

將輸出:

consul
go.micro.srv.example
topic:topic.go.micro.srv.example

更詳細(xì)的測試,請查看這里https://github.com/micro/micro的測試方法,代碼都一樣,輸出應(yīng)該一樣,具體就不詳細(xì)展開了,下一節(jié)我們再詳細(xì)分析微服務(wù)的編寫和部署等方面。
具體有什么不明白的可以私信或者百度和谷歌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容