此项目可以帮助你在go-micro中使用nacos.
使用nacos 命名空间,使用http访问微服务
HTTP 微服务 地址 https://github.com/foxiswho/go-micro-echo-demo
Nacos:https://nacos.io/en-us/
Go-Micro:https://github.com/micro/go-micro
此项目利用go-micro创建服务端(server.go)以及客户端(client.go).
-
在服务端中使用protobuf文件定义了一个服务叫做Greeter的处理器,它有一个接收HelloRequest并返回HelloResponse的Hello方法。并将服务端注册到nacos
syntax = "proto3"; package helloworld; service Greeter { rpc Hello(HelloRequest) returns (HelloResponse) {} } message HelloRequest { string name = 1; } message HelloResponse { string greeting = 2; }
-
在客户端完成服务注册,客户端调用Hello,获取服务列表,获取单个服务,以及监听服务的功能。
ps:(本项目中client.go 使用的nacos客户端是go-mirco提供的是默认配置。go-micro 的registry 接口自由度较高,我们可以利用context完成nacos客户端参数的配置, 如何使用context设置nacos客户端参数 可参考:https://github.com/micro/go-plugins/blob/master/registry/nacos/nacos_test.go)
-
server.go
-
服务端:使用go-micro创建服务端Demo,并注册到nacos
//命名空间
nacos.SetNamespaceId("9d5d3937-27a6-45a4-b300-e30dc3656a90") registry := nacos.NewRegistry(func(options *registry.Options) { options.Addrs = addrs }) service := micro.NewService( // Set service name micro.Name("my.micro.service"), // Set service registry micro.Registry(registry), ) service.Run()
-
-
client.go
-
客户端:使用go-micro创建客户端Demo,注册到nacos.
//命名空间
nacos.SetNamespaceId("9d5d3937-27a6-45a4-b300-e30dc3656a90") r := nacos.NewRegistry(func(options *registry.Options) { options.Addrs = addrs }) service := micro.NewService( micro.Name("my.micro.service.client"), micro.Registry(r))
2. 客户端rpc调用 ```go // 创建新的客户端 greeter := helloworld.NewGreeterService(serverName, service.Client()) // 调用greeter rsp, err := greeter.Hello(context.TODO(), &helloworld.HelloRequest{Name: "John"})
-
查询服务列表
services,err:=registry.ListServices()
-
获取某一个服务
service, err := registry.GetService(serverName)
-
监听服务
//监听服务 watch, err := registry.Watch() for { result, err := watch.Next() if len(result.Action) > 0 { fmt.Println(result, err) } }
-
-
#clone项目 $git clone [email protected]:sanxun0325/go-micro-nacos-demo.git
-
#启动服务端 $go run server.go 在控制台可看到打印如下日志: 2020-08-25 20:11:52 [email protected]/service.go:200 level=info Starting [service] my.micro.service 2020-08-25 20:11:52 file=grpc/grpc.go:864 level=info Server [grpc] Listening on [::]:64604 2020-08-25 20:11:52 file=grpc/grpc.go:697 level=info Registry [nacos] Registering node: my.micro.service-c23d867d-4752-4dc2-8944-3098a1d2c404
-
#启动客户端 $go run client.go 在控制台可看到打印如下日志: 2020-08-25 20:18:35 [email protected]/service.go:200 level=info Starting [service] my.micro.service.client 2020-08-25 20:18:35 file=grpc/grpc.go:864 level=info Server [grpc] Listening on [::]:64957 2020-08-25 20:18:35 file=grpc/grpc.go:697 level=info Registry [nacos] Registering node: my.micro.service.client-ae7d2a0b-3758-49ee-8bd3-d30377a416e4 此时服务端控制台追加打印(服务调用成功日志): 2020-08-25 20:18:35 file=go-micro-demo/server.go:17 level=info Received Helloworld.Call request
-
在nacos中可以看到 客户端和服务端都已经注册在服务列表中。