微服務的本質是讓專業的人作專業的事情,作出更好的東西。
golang
具有高併發,靜態編譯等特性,在性能、安全等方面具有很是大的優點。go-micro
是基於golang
的微服務編程框架,go-micro
操做簡單、編碼高效、功能強大。可是網絡上資料偏少,本系列文章定位最簡單最容易上手的go-micro
入門教程,全部案列來自實操,而非網絡上的複製粘貼。html
本章節的目的是讓你們最快速搭建好
go-micro
環境
軟件 | 環境 |
---|---|
操做系統 | win10 |
golang | go 12.7/AMD64 |
micro | micro version 1.8.4 |
consul | consul 1.5.4 |
最快速有效的方法是使用GO1.11
以上版本而且設置環境變量node
#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
若是沒有git請自行安裝gitlinux
#下載地址 https://git-scm.com/downloads/
訪問以下網址git
https://github.com/protocolbuffers/protobuf/releases
下載,不一樣的版本文件名稱不同,咱們這裏選擇protoc-3.9.1-win64.zip
github
protoc-3.9.1-win64.zip
解壓到目標文件架,咱們以e:\dev
爲例golang
e:\dev\protoc-3.9.1-win64
添加e:\dev\protoc-3.9.1-win64\bin
到環境變量path
編程
這個插件主要做用是經過.proto
文件生成適用於go-micro
的代碼windows
go get -u -v github.com/micro/protoc-gen-micro
下載windows版本api
https://www.consul.io/downloads.html
解壓到安全
e:\dev\consul
添加e:\dev\consul
到環境變量path
使用以下指查看是否安裝成功,以下所示安裝成功
>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
注意:在win系統下
$GOPATH
環境變量無效,所以如上腳本將建立微服務失敗,所以咱們須要對如上腳本進行處理
#切換到項目目錄下 >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
能夠經過以下格式訪問
http://127.0.0.1:8080/user/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
restd插件請求接口
開源項目golang go語言後臺管理框架restgo-admin
你必須知道的18個互聯網業務模型
推薦閱讀
掃微信二維碼實現網站登錄提供體驗地址和源代碼
開源項目golang go語言後臺管理框架restgo-admin
支持手勢觸摸,可左右滑動的日曆插件
你必須知道的18個互聯網業務模型