go-micro命令行创建helloworld微服务 - Go语言中文社区

go-micro命令行创建helloworld微服务


一、前言

以命令行的方式创建一个微服务(使用默认的mdns服务发现),然后建立客户端调用微服务

二、环境准备

  • 最基本的,go开发环境配置完成,gopath已设置好
  • go-micro环境已安装完成
    环境的安装可以参考下面两篇文章,虽然有点问题
    https://www.kancloud.cn/linimbus/go-micro/529024

    https://micro.mu/blog/2016/03/20/micro.html
  • micro工具安装完成
  • proto工具可以暂时不装,但之后还是需要安装的

三、正式开始

3.1 创建微服务前一些服务的启动

3.1.1 启动微服务

终端输入

micro

这里需要提一下,micro如果不带参数,默认的服务发现使用的是mdns
在这里插入图片描述

3.1.2. 查看当前的服务

这一步是确认服务发现正常,而且留意一下,这时候服务列表里没有helloworld

micro list services

在这里插入图片描述

3.2 创建helloworld微服务

3.2.1命令行预创建helloworld微服务

huanglin@huanglindeMacBook-Pro src % micro new --type "srv" micro/rpc/helloworld
Creating service go.micro.srv.helloworld in /Users/huanglin/go/src/micro/rpc/helloworld

.
├── main.go
├── generate.go
├── plugin.go
├── handler
│   └── helloworld.go
├── subscriber
│   └── helloworld.go
├── proto/helloworld
│   └── helloworld.proto
├── Dockerfile
├── Makefile
└── README.md


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 helloworld.proto:

cd /Users/huanglin/go/src/micro/rpc/helloworld
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/helloworld/helloworld.proto


这个命令的意思是,在$GOPATH/src下的 micro/src文件夹下创建一个helloworld的微服务,输入之后会返回一堆内容,“翻译一下”,就是告诉我们,想启动一个微服务,还需要做下面几件事情

  • 安装proto

    如果不清楚怎么安装,它给了提示(这是macos的提示,linux和windws的不一样,总之,按提示安装就行)
    在这里插入图片描述
  • 用安装好的proto工具编译helloworld.proto文件
    在这里插入图片描述

3.2.2 安装proto

参考 3.2.1

3.2.3 proto编译文件

参考3.2.1

3.2.4 运行

选择main.go
在这里插入图片描述
点开确认下包是否缺少,红的代表是缺失的
在这里插入图片描述
这时候需要用go mod,添加依赖,这部分属于go mod 的范畴,解决报红的问题
解决之后,直接go run main.go启动
在这里插入图片描述

然后使用之前3.1.2的命令,micro list services,确认微服务是否能被发现,如图,已经有了一个helloworld的微服务
在这里插入图片描述

到这里一个helloworld微服务已经启动,但是服务总是需要客户端调用的
不然没什么意义

3.3 客户端调用helloworld微服务

时间关系,直接贴代码

package main

import (
	"context"
	"fmt"

	"github.com/micro/go-micro"
	hello "micro/rpc/helloworld/proto/helloworld"
)

func main() {
	// create a new service
	service := micro.NewService()

	// parse command line flags
	service.Init()

	// Use the generated client stub
	cl:= hello.NewHelloworldService("go.micro.srv.helloworld",service.Client())

	// Make request
	rsp, err := cl.Call(context.Background(), &hello.Request{
		Name: "John",
	})
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(rsp.Msg)
}

执行的结果
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_38707040/article/details/106006627
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢