六.Micro
Micro是一个专注于简化分布式系统开发的微服务生态系统,是一个工具集合,其含义类似beego中的bee.
环境安装
下载micro
go get -u -v github.com/go-log/log
go get -u -v github.com/gorilla/handlers
go get -u -v github.com/gorilla/mux
go get -u -v github.com/gorilla/websocket
go get -u -v github.com/mitchellh/hashstructure
go get -u -v github.com/nlopes/slack
go get -u -v github.com/pborman/uuid
go get -u -v github.com/pkg/errors
go get -u -v github.com/serenize/snaker
# hashicorp_consul.zip包解压在github.com/hashicorp/consul
unzip hashicorp_consul.zip -d github.com/hashicorp/consul
# miekg_dns.zip 包解压在github.com/miekg/dns
unzip miekg_dns.zip -d github.com/miekg/dns
go get github.com/micro/micro
# 编译安装micro
cd $GOPATH/src/github.com/micro/micro
go build -o micro main.go
sudo cp micro /bin/
# 插件安装
go get -u -v github.com/golang/protobuf/{
proto,protoc-gen-go}
go get -u -v github.com/micro/protoc-gen-micro
micro演示
micro 是默认使用rpc框架的
micro new [command optionts ]_[arguments…]
–namespace “go.micro” # 服务的命名空间 e.g com.example
–type “srv” # 服务类型,e.g api, fnc, srv, web
–fqdn # 服务的正式定义全面 e.g com.example.srv.service (默认为 namespace.type.alias)
–alias # 别名
- 创建服务端
micro new --type "srv" micro/rpc/srv #micro是相对于go/src下的文件夹名称
.
├── main.go
├── plugin.go # 插件
├── handler # 被调用函数
│ └── example.go
├── subscriber # 订阅服务
│ └── example.go
├── proto/example # proto协议
│ └── example.proto
├── Dockerfile # docker生成文件
├── Makefile
└── README.md
文件会生成在$GOPATH/src/micro/rpc/srv下
- 创建web
micro new --type "web" micro/rpc/web
.
├── main.go
├── plugin.go
├── handler
│ └── handler.go
├── html # 前端页面
│ └── index.html
├── Dockerfile
├── Makefile
└── README.md
文件会默认生成在$GOPATH/src/micro/rpc/web下
- 启动consul进行监管
consul agent -dev
- 对srv服务操作
cd /home/eric/go/src/micro/rpc/srv
protoc --proto_path=. --go_out=. --micro_out=. proto/example/example.proto
# 这时进入 proto/example 查看多了 example.micro.go example.pb.go 两个文件
#如果报错就按照提示将包进行下载
go get -u github.com/golang/protobuf/{
proto,protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro
#如果还不行就把以前的包删掉从新下载
- 对web端main.go进行修改
只在17行添加了端口
package main
import (
"github.com/micro/go-log"
"net/http"
<