一、下載安裝
官方給的步驟:
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這個東西呢就自動化幫助我們做這些事,如下表(來自這里):

然后第二個依賴是Protobuf,就是類似json轉(zhuǎn)換的序列化工具。
下面說說這兩個依賴怎么安裝使用。
1、Service Discovery
這里使用默認(rèn)的consul,這里是下載地址,下載相應(yīng)版本,解壓后

然后將此文件夾加入環(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的生成工具了。下面是解壓后的文件夾:

將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ù)的編寫和部署等方面。
具體有什么不明白的可以私信或者百度和谷歌。