在前文《Go语言微服务实战系列(二)把Go客户端注册到Nacos》我们实现了把客户端注册到nacos上,但是当我们服务下线的时候,我们是需要把自己从注册列表中移除的。所以这里的话我们还得加工一下。
粗暴下线方式
这里我们首先介绍下粗暴的下线方式,这种方式其实就是什么代码都不需要修改。当我们的程序关掉的时候,nacos服务端会自动把他T下线,例如我们这里在控制台直接停止web客户端,示例图如下:
此时我们去nacos上查看,刷新一下之后就看不到demo1的实例了,示例图如下:
所以这种方式方法的话,其实对于我们来说不算是很友好,我把他归为粗暴下线。
优雅下线方式
优雅下线方式是相对粗暴下线方式来说的,也就是我们在对应代码的地方,添加一些defer关闭等操作,下面我们来演示一下,首先在nacosclient.go里面添加一个client变量和注销方法,示例代码如下:
var NamingClient naming_client.INamingClient // 注销服务 func DeRegisterServiceInstance(client naming_client.INamingClient) { success, err := client.DeregisterInstance(vo.DeregisterInstanceParam{ Ip: getHostIp(), Port: 9000, ServiceName: "demo1", Ephemeral: true, //it must be true }) if !success || err != nil { panic("DeRegisterServiceInstance failed!" + err.Error()) } }
最后在main函数里面调用这个方法即可,如下图:
最后我们把项目启动和关闭,效果都没啥问题。
还没有评论,来说两句吧...