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

释放双眼,带上耳机,听听看~!

在后续一段时间里, 我会写一系列文章来讲述如何实现一个RPC框架。 这是系列第三篇文章, 主要讲述了服务注册和服务发现这一块。

在系列的第一篇文章中提到,我们的RPC框架需要有一个服务注册中心。 通过这个中心,服务可以把自己的信息注册进来,也可以获取到别的服务的信息(例如ip、端口、版本信息等)。这一块有个统一的名称,叫服务发现。

对于服务发现,现在有很多可供选择的工具,例如zookeeper, etcd或者是consul等。 有一篇文章专门对这三个工具做了对比: 服务发现:Zookeeper vs etcd vs Consul。 在我的框架中, 我选择使用Consul来实现服务发现。对于Consul不了解的朋友可以去看我之前写的关于Consul的博客。

Consul客户端也有一些Java的实现,我用到了consul-api。

服务注册

首先,我们定义一个接口:

这个接口很简单,向服务注册中心注册自己的地址。

对应的consul的实现:

这里值得注意的是,要确保id绝对唯一。 我能想到的比较直观的解决方案是serviceName + 本机ip + 本机port的组合。

服务发现

首先,我们定义一个接口:

这个接口很简单,传入serviceName,获取一个可以访问的该service的地址。

对应的consul的实现:

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Google Adsense 技巧提示100条

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索