上文《Go语言微服务实战系列(一)Nacos部署安装》我们已经把nacos给安装好了,接下来我们就需要把go语言开发的客户端给注册到nacos中去。
这里我们使用前面的gin框架编写的web项目,详见《Go语言Web开发系列(十七)实战Gin web框架MVC项目》的基础上来进行编码。
在java语言里面由于有现成的框架,我们想要把服务注册到nacos中只需要引入nacos的discover注解即可。在go语言中,稍微复杂一点,也就是需要自己根据nacos的api来实现服务的注册。下面我们来演示一下:
1)创建discover分层
这里由于是服务注册与发现,所以这里的话,我们在创建一个discover的包,示例图如下:
创建这个包主要是为了人为好看,因为需要把client的服务注册与发现的代码编写到里面去。
2)创建NacosClient
接下来我们就要创建NacosClient了,这里主要是把当前的web作为一个服务给注册到nacos注册中心去。在go语言里面把服务注册到nacos中主要分为以下几步:
1、引入nacos相关的sdk 2、创建nacos服务端的配置,例如:nacos服务端的地址,端口,路径,名称空间,连接配置,nacos账号,nacos密码等信息。 3、创建client的相关配置信息,例如:服务ip,服务端口,服务名称等 4、把当前的服务注册到nacos中去。
下面我们给出对应的示例代码:
package discover import ( "fmt" "net" "strings" "github.com/nacos-group/nacos-sdk-go/v2/clients" "github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client" "github.com/nacos-group/nacos-sdk-go/v2/common/constant" "github.com/nacos-group/nacos-sdk-go/v2/vo" ) func RegisterToNacos() { /** nacos服务端信息 */ sc := []constant.ServerConfig{ *constant.NewServerConfig("192.168.31.189", 8848, constant.WithContextPath("/nacos")), } //注册到对应的名称空间,设置相关的连接信息 cc := *constant.NewClientConfig( constant.WithNamespaceId("4538970d-e6b4-4829-bafa-bf524875aff3"), constant.WithTimeoutMs(5000), constant.WithNotLoadCacheAtStart(true), constant.WithLogDir("/tmp/nacos/log"), constant.WithCacheDir("/tmp/nacos/cache"), constant.WithUsername("nacos"), constant.WithPassword("nacos"), ) //实例化client client, _ := clients.NewNamingClient( vo.NacosClientParam{ ClientConfig: &cc, ServerConfigs: sc, }, ) //创建当前服务的配置信息,并且注册到nacos中去 registerServiceInstance(client, vo.RegisterInstanceParam{ Ip: getHostIp(), Port: 9000, ServiceName: "demo1", Weight: 10, Enable: true, Healthy: true, Ephemeral: true, }) } // 注册服务 func registerServiceInstance(nacosClient naming_client.INamingClient, param vo.RegisterInstanceParam) { success, err := nacosClient.RegisterInstance(param) if !success || err != nil { panic(err.Error()) } } // 获取本机ip地址 func getHostIp() string { conn, err := net.Dial("udp", "8.8.8.8:53") if err != nil { fmt.Println("get current host ip err: ", err) return "" } addr := conn.LocalAddr().(*net.UDPAddr) ip := strings.Split(addr.String(), ":")[0] return ip }
3)注册服务
在go语言里面,我们的大部分主要动作都是通过main方法触发的,所以我们需要在main方法中调用这里的注册代码。示例如下:
然后我们运行一下这个main函数,然后去nacos服务端对应的名称空间上即可看到当前的服务已经注册到nacos中去了。
然后点击详情,点进去可以看到我们启动的服务ip和端口等信息,示例如下:
说明我们的服务是没有任何问题的。成功的实现了当前服务的注册。
备注:
1、go语言中需要把客户端注册到nacos中的话,需要自己实现相关的注册代码。 2、上面的代码主要是演示把服务注册到nacos中,其实整个服务注册与发现及下线销毁等代码还没有,所以要实现完整的服务注册与发现大家继续看后面的代码。
最后按照惯例,附上本案例的源码,登录后即可下载。
还没有评论,来说两句吧...