go-micro 需要 protoc-gen-micro 来生成代码。所以需要一下依赖:
下载最新版本的依赖
go get https://github.com/protocolbuffers/protobuf/releases
go get github.com/golang/protobuf/protoc-gen-go
go get github.com/micro/micro/v3/cmd/protoc-gen-micro
目前最新版本的micro是3.0版本的,所以这里我们安装的也是3.0版本的micro。
go install github.com/micro/micro/v3@latest
# MacOS
curl -fsSL https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh | /bin/bash
# Linux
wget -q https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh -O - | /bin/bash
# Windows
powershell -Command "iwr -useb https://raw.githubusercontent.com/micro/micro/master/scripts/install.ps1 | iex"
docker pull micro/micro
在开始编写服务之前,让我们运行一个现有的服务,因为它只需几个命令!
首先,我们必须启动micro server。执行此操作的命令是:
micro server
在使用 micro server 前需要先登录服务,默认的账号密码如下:
账号/密码:admin/micro
E:\Goland\go-micro-demo>micro login
Enter username: admin
Enter password:
Successfully logged in.
查看 micro server 中正在运行的服务,命令:
E:\Goland\go-micro-demo>micro services
api
auth
broker
config
events
network
proxy
registry
runtime
store
web
一共11个,所有这些服务都是micro server中的子模块,在浏览器端查看 localhost:8082 。
这很酷,但它仍然不是我们推出的东西!让我们开始一项服务,我们可以真正相信它的存在。如果我们去github.com/micro/services,我们会看到一堆由微作者编写的服务。其中之一是helloworld。
运行服务的命令是micro run。
micro run github.com/micro/services/helloworld
查看正在运行的服务的状态:
E:\Goland\go-micro-demo>micro status
NAME VERSION SOURCE STATUS BUILD UPDATED METADATA
helloworld latest github.com/micro/services/helloworld running n/a 4s ago owner=admin, group=micro
我们还可以查看服务的日志以验证它是否正在运行:
E:\Goland\go-micro-demo>micro logs helloworld
2022-6-06 17:52:21 file=service/service.go:195 level=info Starting [service] helloworld
2022-6-06 17:52:21 file=grpc/grpc.go:902 level=info Server [grpc] Listening on [::]:33975
2022-6-06 17:52:21 file=grpc/grpc.go:732 level=info Registry [service] Registering node: helloworld-67627b23-3336-4b92-a032-09d8d13ecf95
Micro 自动为您的服务生成 CLI 命令,格式为:micro [service] [method],默认方法为“调用”。参数可以作为标志传递,因此我们可以使用以下方式调用我们的服务:
$ micro helloworld call --name=Jane
{
"msg": "Hello Jane"
}
如果我们想知道服务有哪些节点,我们可以运行以下命令:
E:\Goland\go-micro-demo>micro helloworld --help
NAME:
micro helloworld
VERSION:
latest
USAGE:
micro helloworld [command]
COMMANDS:
call
使用 API 方式调用:
Micro 在 8080端口上开放了一个 http API,所以可以使用 curl 方式调用。
curl "http://localhost:8080/helloworld?name=John"