Golang 微服务框架 - 3. Micro 生成并编译运行第一个 srv 服务

8 篇文章 2 订阅
5 篇文章 2 订阅

Micro 介绍

官方网站: micro.mu
官方文档: micro.mu/docs
源码仓库: github.com/micro/micro

Micro 是一个工具集合, 通过将微服务架构抽象成一组工具。隐藏了分布式系统的复杂性,为开发人员提供了更简洁的概念。

通过 micro 创建项目:

micro new --type "srv" \
          --namespace "com.test" \
          --alias "first_srv" \
          github.com/micro/examples/first_srv

命令会生成一个 工程目录, 包含了一些通用代码, 目录结构:

├── main.go
├── plugin.go
├── handler
│   └── example.go
├── subscriber
│   └── example.go
├── proto\example
│   └── example.proto
├── Dockerfile
├── Makefile
└── README.md

安装 protobuf:

  1. https://github.com/google/protobuf/releases 下载对应平台的 protobuf 包
  2. 把 bin目录添加到 PATH 环境变量中.
  3. 在命令行中运行 protoc , 如果提示命令未找到检查 protobuf 是否安装成功.

安装 protobuf 代码生成相关库:

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro

通过 proto 文件生成 go 代码:

cd $GOPATH\src\github.com\micro\examples\first_srv
protoc --go_out=. --micro_out=. proto/example/example.proto

运行:

$ go build github.com/micro/examples/first_srv && first_srv
2018/06/17 13:26:13 Listening on [::]:9040
2018/06/17 13:26:13 Broker Listening on [::]:9041
2018/06/17 13:26:13 Registering node: com.test.srv.first_srv-f325ad49-71ee-11e8-a4a2-7054d2dea53d

由于使用的是服务发现,所以上面打印的端口在你机器上可能不一样,因为端口是随机的,但不影响正常运行.

验证是否成功

  • 获取服务列表
$ micro list services
com.test.srv.first_srv
consul
topic:com.test.srv.first_srv
  • 获取服务详情
$ micro get service com.test.srv.first_srv
service  com.test.srv.first_srv

version latest

ID      Address Port    Metadata
com.test.srv.first_srv-f325ad49-71ee-11e8-a4a2-7054d2dea53d     192.168.0.106   9040    transport=http,broker=http,server=rpc,registry=consul

Endpoint: Example.Call
Metadata: stream=false

Request: {
        name string
        -
        - []uint8 {
                uint8 uint8
        }
        - int32
}

Response: {
        msg string
        -
        - []uint8 {
                uint8 uint8
        }
        - int32
}


Endpoint: Example.PingPong
Metadata: stream=true

Request: {}

Response: {}


Endpoint: Example.Stream
Metadata: stream=true

Request: {}

Response: {}


Endpoint: Example.Handle
Metadata: subscriber=true,topic=com.test.srv.first_srv

Request: {
        say string
        -
        - []uint8 {
                uint8 uint8
        }
        - int32
}

Response: {}


Endpoint: Func
Metadata: subscriber=true,topic=com.test.srv.first_srv

Request: {
        say string
        -
        - []uint8 {
                uint8 uint8
        }
        - int32
}

Response: {}
  • 尝试调用服务
$ micro query com.test.srv.first_srv Example.Call '{"name":"My_name"}'
Deprecated. Use call instead
{
        "msg": "Hello My_name"
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值