如何写一个RPC框架(三):服务注册与服务发现

在后续一段时间里, 我会写一系列文章来讲述如何实现一个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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值