服务注册与发现
2025/5/14大约 3 分钟componentconsuletcdnacos
服务注册与发现代码示例
consul、etcd、nacos 客户端代码示例
在服务中使用服务注册与发现示例
sponge 创建的服务支持 Consul
、Etcd
、Nacos
作为服务注册与发现,下面以 Consul
作为示例,介绍如何启用服务注册和服务发现功能,帮助开发者快速完成配置和实现,如果使用 Etcd
或 Nacos
,操作也是一样的。
启用服务注册
服务注册功能用于将服务注册到服务注册中心(如 Consul、Etcd、Nacos 等),方便其他服务进行发现和调用。以下步骤演示如何在 Consul 上启用服务注册:
配置文件修改
打开配置文件
configs/xxx.yml
。在
app
配置块下,将host
的值设置为本机 ip 地址或域名,如果服务和 consul 不在同一个机器上,不能使用127.0.0.1。在
app
配置块下,将registryDiscoveryType
的值设置为consul
,并去掉该字段前面的注释符号(#
)。在配置文件末尾找到
consul
配置块,取消其注释,并填写 Consul 的地址,例如:consul: address: "192.168.3.37:8500"
修改服务初始化代码
- 打开文件
cmd/xxx/initial/createService.go
,根据以下步骤调整代码: - 注释掉
// case 1, create a grpc/http service without registry
下的代码块。 - 取消注释
// case 2, create a grpc service and register it with consul or etcd or nacos
下的代码块。 - 取消注释
// register service with consul or etcd or nacos, select one of them to use
部分,并根据需要删除不使用的 Etcd 和 Nacos 的注册代码,仅保留 Consul 的代码。
- 打开文件
启用服务发现
服务发现功能用于从服务注册中心动态获取目标服务的地址,实现负载均衡和高可用。以下步骤演示如何在 Consul 上启用服务发现:
配置文件修改
打开配置文件
configs/xxx.yml
。在
grpcClient
配置块下,将registryDiscoveryType
的值设置为consul
,并去掉该字段前的注释符号(#
)。在配置文件末尾找到
consul
配置块,取消注释,并填写 Consul 的地址,例如:consul: address: "192.168.3.37:8500"
修改客户端代码
- 打开文件
internal/rpcclient/xxx.go
,如果文件不存在,请在管理页面通过【Public】 → 【生成 gRPC 服务连接代码】功能生成该文件。 - 按以下步骤调整代码:
- 取消注释
// using service discovery
下的代码块。 - 取消注释
// discovery service with consul or etcd or nacos, select one of them to use
下的代码块,并删除不需要的 Etcd 和 Nacos 相关代码,仅保留 Consul 代码。
- 打开文件