go-micro微服务框架初体验

一. 环境准备。

  1. 安装依赖包
    这里我用的是gomod
  2. 安装protocol buffers
    下载地址: https://github.com/protocolbuffers/protobuf/releases
    下载解压后放入PATH路径下

二. 实现服务端。

  1. 新建account.proto文件。
syntax = "proto3";

service Greeter {
	rpc Hello(HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
	string name = 1;
}

message HelloResponse {
	string greeting = 2;
}
  1. 使用protoc生成相应的代码
protoc --go_out=. --micro_out=. proto/greeter.proto
  1. 服务端代码
package main

import (
	"context"
	"fmt"
	proto "goMicroApp/hello-world/proto"
	"github.com/micro/go-micro"
)

type Greeter struct{}

func (g *Greeter) Hello(ctx context.Context, req *proto.HelloRequest, rsp *proto.HelloResponse) error {
	rsp.Greeting = "你好," + req.Name
	return nil
}

func main() {
	// 创建服务,除了服务名,其它选项可加可不加,比如Version版本号、Metadata元数据等
	service := micro.NewService(
		micro.Name("greeter.service"),
		micro.Version("latest"),
	)
	service.Init()

	// 注册服务
	proto.RegisterGreeterHandler(service.Server(), new(Greeter))

	// 启动服务
	if err := service.Run(); err != nil {
		fmt.Println(err)
	}
}

三. 实现客户端。

  1. 客户端代码
package main

import (
	"context"
	"fmt"
	proto "goMicroApp/hello-world/proto"
	"github.com/micro/go-micro"
)

func main() {
	// 定义服务,可以传入其它可选参数
	service := micro.NewService(micro.Name("greeter.client"))
	service.Init()

	// 创建客户端
	greeter := proto.NewGreeterService("greeter.service", service.Client())

	// 调用greeter服务
	rsp, err := greeter.Hello(context.TODO(), &proto.HelloRequest{Name: "World"})
	if err != nil {
		fmt.Println(err)
		return
	}

	// 打印响应结果
	fmt.Println(rsp.Greeting)
}

四. 运行。

  1. 运行服务端。
go run server.go
  1. 运行客户端得到结果。
PS C:\Users\admin\go\src\goMicroApp\hello-world\service> go run client.go
你好,World

MicroWeb可视化页面

  1. 安装
go get github.com/micro/micro
  1. 运行
PS C:\Users\admin\go> micro web
  1. 访问http://localhost:8082/
    接口信息:在这里插入图片描述
    测试请求:在这里插入图片描述

总结

  这是我在B站看到的go-micro微服务框架教程,刚看到第一章,好多的概念我还是没整明白(如consul,etcd服务发现等),看着迷迷糊糊的,上面的代码是我照葫芦画瓢做的,做一个学习记录吧,防止我以后忘记了。

  学习教程: https://space.bilibili.com/478093818?spm_id_from=333.788.b_765f7570696e666f.1

猜你喜欢

转载自blog.csdn.net/qq_36453564/article/details/107734460