使用Gin + Go-Micro +领事来实现一个简单的微服务项目,实现服务注册和发现功能
1.项目目录:
2.路由器。
3. main.go
1.项目目录:
2.路由器。
3. main.go
导入(导入(
“字节”
“ FMT”
“ gin_micro/ordererserver/路由器”
“ github.com/micro/go-micro/client/selector”
“ github.com/micro/go-micro/registry””
“ github.com/micro/go-micro/web”
“ github.com/micro/go--插件/注册表/领事”
“ net/http”
“时间”
治愈
var领事注册表
func init(){
领事=领事。
Registry.Addrs(“ 127.0.0.1:8500”))
}
func main(){
//初始化路线
ginrouter:=路由器.initrouters()
//注册服务
微服务:= web.newservice(
web.name(“订单”),
//web.registertl_sime.second430),/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 放注册服务的到期时间
//web.registerinterval(time.second* 20),//////////////////////////////////////////////////
web.address(“:18002”),
web.handler(ginrouter),
Web.Regization(领事),
治愈
//服务发现:获取服务地址
hostaddress:= getserviceaddr(“ userererver”)
如果Len(Hostaddress) <= 0 {
fmt.Println("hostAddress is null")
} else {
url := "http://" + hostAddress + "/users"
response, _ := http.Post(url, "application/json;charset=utf-8", bytes.NewBuffer([]byte("")))
fmt.Printf("发现服务,response = %v
", response)
}
microService.Run()
}
// 服务发现
func GetServiceAddr(serverName string) (address string) {
var retryTimes int
for {
servers, err := consulReg.GetService(serverName)
fmt.Println(servers)
if err != nil {
fmt.Println(err.Error())
}
var services []*registry.Service
for _, value := range servers {
fmt.Println(value.Name, ":", value.Version)
services = append(services, value)
}
// 获取其中一个服务的信息
next := selector.RoundRobin(services)
if node, err := next(); err == nil {
address = node.Address
}
if len(address) > 0 {{{
返回
}
//重复次数++
RETRYTIMES ++
时间。
//重复5次并返回空中
如果retrytimes> = 5 {
返回
}
}
}
1.开始领事:领事代理-DEV -NODE HHH
2.服务注册
启动userServer/main.go和orderServer/main.go
发布USERSERVER和订单服务器以领事
浏览器输入Localhost:8500呮领事界面以查看已发布的微服务:
3.服务发现
订单服务器/main.go主导用户服务器微服务,然后将返回信息打印到控制台
