跳到主要内容
版本:2.8.x(Latest)

接下来,我们将用户微服务注册到etcd,供其他服务调用。

添加配置文件,写入etcd的访问地址。

app/user/manifest/config/etcd.yaml

etcd:  
address: "srv.com:2379"

在入口文件添加注册逻辑:

app/user/main.go

package main  

import (
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"

"github.com/gogf/gf/contrib/registry/etcd/v2"
"github.com/gogf/gf/contrib/rpc/grpcx/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"

"proxima/app/user/internal/cmd"
)

func main() {
var ctx = gctx.New()
conf, err := g.Cfg("etcd").Get(ctx, "etcd.address")
if err != nil {
panic(err)
}

var address = conf.String()
grpcx.Resolver.Register(etcd.New(address))

cmd.Main.Run(ctx)
}

实际上,服务注册的关键代码只有一行,其他都是读取文件配置的代码:

grpcx.Resolver.Register(etcd.New(address))

重新运行项目,让代码生效。然后进入etcd容器,执行命令查看注册是否成功。

$ etcdctl get "" --prefix --keys-only

这条命令用作查看etcd中所有存在的key,在其中我们会看到注册的服务:

/service/default/default/user/latest/{IP}:32001

服务注册可以理解成DNS域名解析。配置文件中的服务名称grpc.name,它可以类比成域名。