須要使用GO1.11以上版本html
#linux 下 export GO111MODULE=on export GOPROXY=https://goproxy.io # windows下設置以下環境變量 setx GO111MODULE on setx GOPROXY https://goproxy.io
# 使用以下指令安裝 go get -u -v github.com/micro/micro go get -u -v github.com/micro/go-micro
https://github.com/protocolbuffers/protobuf/releases
//下載,不一樣的版本文件名稱不同,咱們這裏選擇protoc-3.9.1-win64.zip protoc-3.9.1-win64.zip
//解壓到目標文件架,咱們以e:\dev爲例 e:\dev\protoc-3.9.1-win64 //添加e:\dev\protoc-3.9.1-win64\bin到環境變量path
//這個插件主要做用是經過.proto文件生成適用於go-micro的代碼 go get -u -v github.com/micro/protoc-gen-micro
//下載windows版本 https://www.consul.io/downloads.html //解壓到 e:\dev\consul
添加e:\dev\consul到環境變量path
使用以下指查看是否安裝成功,以下所示安裝成功node
>consul Usage: consul [--version] [--help] <command> [<args>] Available commands are: acl Interact with Consul's ACLs agent Runs a Consul agent catalog Interact with the catalog config Interact with Consul's Centralized Configurations connect Interact with Consul Connect debug Records a debugging archive for operators
//使用以下指令建立微服務 >micro new techidea8.com/microapp/hello Creating service go.micro.srv.hello in E:\winlion\gopath\src\techidea8.com\microapp\hello . ├── main.go ├── plugin.go ├── handler │ └── hello.go ├── subscriber │ └── hello.go ├── proto\hello │ └── hello.proto ├── Dockerfile ├── Makefile ├── README.md └── go.mod download protobuf for micro: brew install protobuf go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/micro/protoc-gen-micro compile the proto file hello.proto: cd E:\winlion\gopath\src\techidea8.com\microapp\hello protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/hello/hello.proto
#切換到項目目錄下 >cd /d E:\winlion\gopath\src\techidea8.com\microapp\hello # 根據proto生成文件 >protoc --proto_path=. --go_out=. --micro_out=. proto/hello/hello.proto # 啓動應用 >go run main.go 2019/08/19 13:00:46 Transport [http] Listening on [::]:54689 2019/08/19 13:00:46 Broker [http] Connected to [::]:54690 2019/08/19 13:00:46 Registry [mdns] Registering node: go.micro.srv.hello-4851dce2-ab5d-4e4c-801e-44dae5d93f26 2019/08/19 13:00:46 Subscribing go.micro.srv.hello-4851dce2-ab5d-4e4c-801e-44dae5d93f26 to topic: go.micro.srv.hello 2019/08/19 13:00:46 Subscribing go.micro.srv.hello-4851dce2-ab5d-4e4c-801e-44dae5d93f26 to topic: go.micro.srv.hello # 查看是否啓動 >micro list services go.micro.srv.hello topic:go.micro.srv.hello
注意其中的--namespace參數,咱們每個微服務都屬於一個命名空間,經過api暴露出來該命名空間後,知足go.micro.srv.*格式的微服務均可以訪問。如go.micro.srv.hello能夠經過以下格式訪問linux
# 訪問http://127.0.0.1:8080/hello/call >micro api --namespace=go.micro.srv 2019/08/19 13:07:11 Registering API Default Handler at / 2019/08/19 13:07:11 HTTP API Listening on [::]:8080 2019/08/19 13:07:11 Transport [http] Listening on [::]:54934 2019/08/19 13:07:11 Broker [http] Connected to [::]:54935 2019/08/19 13:07:11 Registry [mdns] Registering node: go.micro.api-1753185c-b8e1-49c4-aa0f-617f243a8e2a