在后续一段时间里, 我会写一系列文章来讲述如何实现一个RPC框架(我已经实现了一个示例框架, 代码在我的github上)。 这是系列第三篇文章, 主要讲述了服务注册和服务发现这一块。
在系列的第一篇文章中提到,我们的RPC框架需要有一个服务注册中心。 通过这个中心,服务可以把自己的信息注册进来,也可以获取到别的服务的信息(例如ip、端口、版本信息等)。这一块有个统一的名称,叫服务发现。
对于服务发现,现在有很多可供选择的工具,例如zookeeper, etcd或者是consul等。 有一篇文章专门对这三个工具做了对比: 服务发现:Zookeeper vs etcd vs Consul。 在我的框架中, 我选择使用Consul来实现服务发现。对于Consul不了解的朋友可以去看我之前写的关于Consul的博客。
Consul客户端也有一些Java的实现,我用到了consul-api。
服务注册
首先,我们定义一个接口:
public interface ServiceRegistry {
void register(String serviceName, ServiceAddress serviceAddress);
}
这个接口很简单,向服务注册中心注册自己的地址。
对应的consul的实现:
public class ConsulServiceRegistry implements ServiceRegistry {
private ConsulClient consulClient;
public ConsulServiceRegistry(String consulAddress) {
String address[] = consulAddre

最低0.47元/天 解锁文章
427

被折叠的 条评论
为什么被折叠?



