ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> ### 第三例 基于go-micro做服务注册和服务发现 * 第三例代码 : 链接:[https://pan.baidu.com/s/1jMVmyG-t874gHUu2QCx6fA](https://pan.baidu.com/s/1jMVmyG-t874gHUu2QCx6fA)密码:fjh5 * 逻辑图 ![img](https://box.kancloud.cn/b191b071feedc2032924c8d397d92ba2_1476x888.jpg) > ### 安装consul * Centos7 Docker安装consul :[https://blog.csdn.net/harris135/article/details/78959227](https://blog.csdn.net/harris135/article/details/78959227) * 安装 : docker pull consul * 启动 : docker run -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 53:53/udp consul > ### 服务信息 ~~~ consul启动信息 客户端地址 Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600) 集群地址(LAN:局域网,WAN:广域网) Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) ~~~ > ### 图形界面 ![](/D:/%E6%AD%A3%E5%BC%8F%E6%A1%8C%E9%9D%A2/Golang%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/book/Go%E4%B8%80%E7%99%BE%E4%BE%8B/images/QQ%E6%88%AA%E5%9B%BE20200103182233.png) > ### 服务端 * go run main.go --server\_address=localhost:9005 ~~~ package main import ( "context" hello "github.com/micro/go-grpc/examples/greeter/server/proto/hello" "github.com/micro/go-micro" "github.com/micro/go-micro/registry" "github.com/micro/go-plugins/registry/consul" "log" ) type Say struct{} func (s *Say) Hello(ctx context.Context, req *hello.Request, rsp *hello.Response) error { log.Print("Received Say.Hello request") rsp.Msg = "Hello " + req.Name return nil } func main() { reg := consul.NewRegistry(func(op *registry.Options) { op.Addrs = []string{ "123.207.79.96:8500", } }) service := micro.NewService( micro.Name("go.micro.srv.greeter"), micro.Registry(reg), ) // optionally setup command line usage service.Init() // Register Handlers hello.RegisterSayHandler(service.Server(), new(Say)) // Run server if err := service.Run(); err != nil { log.Fatal(err) } } ~~~ > ### 客户端 ~~~ package main import ( "context" "fmt" hello "github.com/micro/go-grpc/examples/greeter/server/proto/hello" "github.com/micro/go-micro" "github.com/micro/go-micro/registry" "github.com/micro/go-plugins/registry/consul" ) func main() { reg := consul.NewRegistry(func(op *registry.Options) { op.Addrs = []string{ "123.207.79.96:8500", } }) service := micro.NewService( micro.Name("go.micro.srv.greeter"), micro.Registry(reg), ) service.Init() cl := hello.NewSayService("go.micro.srv.greeter", service.Client()) rsp, err := cl.Hello(context.TODO(), &hello.Request{ Name: "John", }) if err != nil { fmt.Println(err) return } fmt.Println(rsp.Msg) } ~~~