当前位置: 首页 > 网络应用技术

使用Gin和Go-Micro实施微服务注册和发现

时间:2023-03-08 11:06:05 网络应用技术

  使用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主导用户服务器微服务,然后将返回信息打印到控制台