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實現初始化路由,服務注冊
packagerouter.go代碼如下
router.go主要用來定義程序的api接口,使用gin開發
package注冊的代碼就寫好了,啟動userserver,我們在micro的服務界面,可以看到如下效果:
說明我們注冊成功了
服務發現
服務發現,就是從etcd中獲取到我們注冊進去的服務,這樣在調用別的服務時,就不用從配置文件獲取,直接查詢etcd即可。
orderserver我們除了實現服務注冊外,也實現服務發現的功能
orderserver代碼結構如下:
上代碼
main.go代碼如下
packageGetServiceAddr就是服務發現的代碼
首先,使用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微服务实战之服务注册与发现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的threading库_py
- 下一篇: html多行文本框_前端面试集锦 HT