当前位置: 首页 > 工具软件 > micro-file > 使用案例 >

Micro

邹野
2023-12-01

Micro解决了构建云本地系统的关键需求。它采用了微服务体系结构模式,并将其转换为一组工具,作为可伸缩平台的构建块。Micro隐藏了分布式系统的复杂性,并为开发人员提供了很好的理解概念。
Micro是一个专注于简化分布式系统开发的微服务生态系统。是一个工具集合, 通过将微服务架构抽象成一组工具。
隐藏了分布式系统的复杂性,为开发人员提供了更简洁的概念。
Go Micro跟其他工具最大的不同是它是插件化的架构,这让上面每个包的具体实现都可以切换出去。举个例子,默认的服务发现的机制是通过Consul,但是如果想切换成etcd或者zookeeper 或者任何你实现的方案,都是非常便利的。

go get github.com/micro/go-micro
go get github.com/micro/micro
go get github.com/micro/protoc-gen-micro

protoc --go_out=plugins=micro:. hello.proto
 protoc --proto_path=. --micro_out=. --go_out=. hello.proto

服务端

package main

import (
	"context"
	"github.com/micro/go-micro"
	"fmt"
	pb "hello01/myproto"
	"log"
)

type Greeter struct {

}

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

func main() {
	service := micro.NewService(
		micro.Name("greeter"),
		micro.Version("latest"),
		micro.Metadata(map[string]string{"type": "hello"}))
	service.Init()
	e := pb.RegisterGreeterHandler(service.Server(), new(Greeter))
	if e!=nil {
		fmt.Println("注册服务出现",e)
		return
	}
	if err:=service.Run();err!=nil{
		log.Println("err")
	}
}

客户端

package main

import (
	pb "hello01/myproto"
	"fmt"
	"github.com/micro/go-micro"
	"golang.org/x/net/context"
)

func main() {
	service := micro.NewService(
		micro.Name("greeter"),
		micro.Version("latest"),
		micro.Metadata(map[string]string{"type": "hello"}))
	service.Init()
	greeter := pb.NewGreeterService("greeter", service.Client())
	res := pb.HelloRequest{}
	res.Name = "wilson"
	rsp, err := greeter.Hello(context.TODO(), &res) //Client API for Greeter service
	if err != nil {
		fmt.Println("请求服务出现了问题...", err)
		return
	}
	fmt.Println("服务返回的结果为:", rsp.Greeting)

}
 类似资料: