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

文章目录

    • 一、前言
    • 二、环境准备
    • 三、正式开始
      • 3.1 创建微服务前一些服务的启动
        • 3.1.1 启动微服务
        • 3.1.2. 查看当前的服务
      • 3.2 创建helloworld微服务
        • 3.2.1命令行预创建helloworld微服务
        • 3.2.2 安装proto
        • 3.2.3 proto编译文件
        • 3.2.4 运行
      • 3.3 客户端调用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的不一样,总之,按提示安装就行)
    go-micro命令行创建helloworld微服务_第1张图片
  • 用安装好的proto工具编译helloworld.proto文件
    go-micro命令行创建helloworld微服务_第2张图片

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启动
go-micro命令行创建helloworld微服务_第3张图片

然后使用之前3.1.2的命令,micro list services,确认微服务是否能被发现,如图,已经有了一个helloworld的微服务
go-micro命令行创建helloworld微服务_第4张图片

到这里一个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)
}

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

你可能感兴趣的:(微服务)