欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

go语言高并发与微服务实战_go-micro+gin+etcd微服务实战之服务注册与发现

发布时间:2024/1/23 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 go语言高并发与微服务实战_go-micro+gin+etcd微服务实战之服务注册与发现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在构建微服务时,使用服务发现可以减少配置的复杂性,本文以go-micro为微服务框架,使用etcd作为服务发现服务,使用gin开发golang服务。

使用gin 的原因是gin能够很好的和go-micro进行集成。

本文主要介绍服务注册和发现的实现

关于如何搭建etcd服务可以看历史文章

本文默认以搭建好了etcd服务,服务的地址是:192.168.109.131:12379

如果你搭建好了自己的etcd服务,可以按照上面文章的步骤做,会看到如下界面:

这里我的etcd服务启用了 3个节点(最少3个)。

开撸

服务注册

我们预设两个server,userserver和orderserver

下面开始上代码:

userserver程序结果如下:

有两个文件router.go和main.go

main.go代码如下

main.go实现初始化路由,服务注册

package

router.go代码如下

router.go主要用来定义程序的api接口,使用gin开发

package

注册的代码就写好了,启动userserver,我们在micro的服务界面,可以看到如下效果:

说明我们注册成功了

服务发现

服务发现,就是从etcd中获取到我们注册进去的服务,这样在调用别的服务时,就不用从配置文件获取,直接查询etcd即可。

orderserver我们除了实现服务注册外,也实现服务发现的功能

orderserver代码结构如下:

上代码

main.go代码如下

package

GetServiceAddr就是服务发现的代码

首先,使用servers,err :=consulReg.GetService(serviceName)获取注册的服务

返回的servers是个slice

然后,使用next := selector.RoundRobin(services)获取其中一个服务的信息

这里注意:

在老版本中可以直接使用selector.RoundRobin(services),但是在v2版本中需要做个转换处理:

var

因为使用的数据结构不同,感兴趣的可以细看下区别。

router.go代码如下

package routersimport "gin-gonic/gin"func InitRouters() *gin.Engine {ginRouter := gin.Default()ginRouter.POST("/orders/", func(context *gin.Context) {context.String(200, "get orderinfos")})return ginRouter }

启动oerderserver 我们就能获取到userserver的地址,各位可以调试看下效果。

今天go-micro+gin+etcd微服务实战就介绍完了,是不是很简单

总结

以上是生活随笔为你收集整理的go语言高并发与微服务实战_go-micro+gin+etcd微服务实战之服务注册与发现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。