当前位置 : 主页 > 编程语言 > java >

Micro

来源:互联网 收集:自由互联 发布时间:2022-06-23
Micro解决了构建云本地系统的关键需求。它采用了微服务体系结构模式,并将其转换为一组工具,作为可伸缩平台的构建块。Micro隐藏了分布式系统的复杂性,并为开发人员提供了很好的

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)

}


上一篇:Consul
下一篇:没有了
网友评论