Dubbo是阿里巴巴开源的分布式RPC框架,其中有一个用于服务发现的注册中心,可以使用zookeeper组件。Dubbo的简单使用看我的第一篇文章。
追梦程序员:第一个Dubbo应用zhuanlan.zhihu.com服务提供者启动时要向注册中心注册自己的服务,消费者想要使用这个服务,必须向注册中心订阅这个服务,注册中心会将服务地址列表返回给消费者。更重要的是,注册中心使用心跳机制检测服务提供者的存活状态,有变化就会通知消费者,这一机制使得服务的迁移、扩容很方便。
第一步:启动服务
为了进一步加深理解,我们来看看在zookeeper中到底存放了什么样的数据。为此我做了一些实验,实验配置如下:
一台window:用于启动多个消费者和一个服务提供者。
一台linux:用于启动zookeeper,和一个服务提供者。
我有两个服务,分别是GreetingsService和AddService,代码如下:
package
package
我在linux上启动了GreetingsService服务,linux的IP为39.108.67.176。这里有一个坑,就是如果没有设置主机名到公网IP的映射,dubbo会使用内网IP发送到zookeeper,但这样外部客户端是无法访问这个服务的,解决方案如下:
CSDN-专业IT技术社区-登录blog.csdn.net我在window上启动了AddService服务,window的IP为192.168.43.13。
所有服务的消费者都是在window下启动的,运行效果如下:
第二步:查看zookeeper
利用ZooInspector工具图形化显示zookeeper中存放的数据。
通过观察可以得出如下结论:
- zookeeper为dubbo的每个服务维护一个目录,目录名称为全限服务名(包名.接口名)
- 每个服务目录里存放了消费者、提供者、配置等信息。可以看到AddService的提供者的ip为192.168.43.13。
- zookeeper使用心跳机制检测提供者和消费者的存活状态,你可以关闭某个服务者或者消费者,然后刷新界面,会看到对应的变化。
好了,我们的大致目的就可以达到了,还有一个就是具体的字段细节,这个考大家去了解。为了帮助大家更好的复现,可以从如下git仓库拉取提供者和消费者的工程代码。
dubbo-examplesgithub.com