[zeromicro/go-zero]An example of a service discovery exception, 服务注册/与发现的生产环境可用性问题

2023-12-22 165 views
3

现在有一个示例: 我有一个api服务,调用了10个grpc服务。这些服务使用etcd进行服务发现。

现在有一个grpc服务因为bug全部下线了。etcd 中没有这个服务的任何ip。 这个时候,我的api服务正在进行bug的紧急修复,需要立马上线。 但是这个时候,这一个grpc服务因为bug未修复启动不了(暂不考虑回滚情况),导致我的api服务也无法发布。

我应该如何面对这个问题才能让api能正常的发布上线,并在grpc服务恢复的时候,api服务通过etcd重新能发现这个grpc服务?

回答

9

第二个示例:

现在我有两个新的grpc服务在开发,并且这两个服务存在互相调用的关系。这两个服务使用etcd进行服务发现。

问题:这个两个服务都是新服务,同时发布的时候etcd中都没有这两个服务的ip。我如何发布这两个服务?

3

自问自答:

如果在服务不存在的情况下也需要启动下游服务,使用zrcp.NewClient(config, zrpc.WithNonBlock())来初始化客户端即可。