微服務(wù)的本質(zhì)是讓專業(yè)的人做專業(yè)的事情,做出更好的東西畴栖。
golang
具備高并發(fā)颊艳,靜態(tài)編譯等特性肾筐,在性能、安全等方面具備非常大的優(yōu)勢娇斑。go-micro
是基于golang
的微服務(wù)編程框架策添,go-micro
操作簡單、編碼高效毫缆、功能強大唯竹。但是網(wǎng)絡(luò)上資料偏少,本系列文章定位最簡單最容易上手的go-micro
入門教程,所有案列來自實操苦丁,而非網(wǎng)絡(luò)上的復(fù)制粘貼浸颓。
本章節(jié)的目的是讓大家最快速搭建好
go-micro
環(huán)境
軟件 | 環(huán)境 |
---|---|
操作系統(tǒng) | win10 |
golang | go 12.7/AMD64 |
micro | micro version 1.8.4 |
consul | consul 1.5.4 |
安裝micro
最快速有效的方法是使用GO1.11
以上版本并且設(shè)置環(huán)境變量
#linux 下
export GO111MODULE=on
export GOPROXY=https://goproxy.io
# windows下設(shè)置如下環(huán)境變量
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
如果沒有g(shù)it請自行安裝git
#下載地址
https://git-scm.com/downloads/
安裝 protoc
訪問如下網(wǎng)址
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
到環(huán)境變量path
安裝protoc-gen-micro插件
這個插件主要作用是通過.proto
文件生成適用于go-micro
的代碼
go get -u -v github.com/micro/protoc-gen-micro
安裝 consul
下載windows版本
https://www.consul.io/downloads.html
解壓到
e:\dev\consul
添加e:\dev\consul
到環(huán)境變量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
hello,world
創(chuàng)建微服務(wù)
使用如下指令創(chuàng)建微服務(wù)
>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
生成適配proto的golang代碼
注意:在win系統(tǒng)下
$GOPATH
環(huán)境變量無效,因此如上腳本將創(chuàng)建微服務(wù)失敗,因此我們需要對如上腳本進行處理
#切換到項目目錄下
>cd /d E:\winlion\gopath\src\techidea8.com\microapp\hello
# 根據(jù)proto生成文件
>protoc --proto_path=. --go_out=. --micro_out=. proto/hello/hello.proto
啟動應(yīng)用
>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
啟動restful api接口支持支持
注意其中的--namespace參數(shù),我們每一個微服務(wù)都屬于一個命名空間,通過api暴露出來該命名空間后,滿足go.micro.srv.*
格式的微服務(wù)都可以訪問。如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插件請求接口
推薦閱讀
掃微信二維碼實現(xiàn)網(wǎng)站登陸提供體驗地址和源代碼
開源項目golang go語言后臺管理框架restgo-admin
你必須知道的18個互聯(lián)網(wǎng)業(yè)務(wù)模型
推薦閱讀
掃微信二維碼實現(xiàn)網(wǎng)站登陸提供體驗地址和源代碼