Dubbo-使用zookeeper作为注册中心时节点的概述

本文内容很容易理解,会阐述当dubbo使用zookeeper作为注册中心时候,zookeeper节点是什么样子的

本文的代码使用的dubbo版本是2.7.x,几年前的版本了,但是不影响探究

首先我们创建一个简单的maven项目,然后写出一段dubbo provider代码(服务提供者),然后启动服务,之后观察zookeeper节点样子

pom.xml文件需要引用2个依赖,如下

cpp 复制代码
<!-- dubbo的依赖 -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.7.23</version>
</dependency>

<!-- 使用zookeeper作为注册中心的时候,dubbo要通过zookeeper客户端操作zookeeper,
这个curator就是zookeeper客户端,zookeeper客户端还有一个是zkClient,本文中我们
使用curator,不使用zkClient -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
    <version>2.7.23</version>
</dependency>

创建服务接口

cpp 复制代码
package aa.bb;
public interface User {

    String getUserName();
}

创建服务接口实现类

cpp 复制代码
package aa.bb;

public class UserImpl implements User {
    @Override
    public String getUserName() {
    	// 返回一段文本,陈述一段客观事实
        return "HR is a little bitch";
    }
}

创建服务提供者代码(provider)

cpp 复制代码
public class Provider {

    public static void main(String[] args) throws IOException {
        ServiceConfig<User> service = new ServiceConfig<>();
        service.setApplication(new ApplicationConfig("service_provider"));
        service.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
        service.setInterface(User.class);
        service.setRef(new UserImpl());

        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setTelnet("invoke");// 允许使用telnet命令调用dubbo服务
        protocolConfig.setHost("127.0.0.1");
        protocolConfig.setPort(20880);
        protocolConfig.setName("dubbo");// 这个协议名必填,而且不能乱写
        service.setProtocol(protocolConfig);

        service.export();
        System.out.println("服务提供方启动成功并且已经注册到zookeeper");
        System.in.read();
    }

}

打开zookeeper,zookeeper初始节点是下面这样子的

运行上述的main函数,之后会发现zookeeper中节点的样子如下

dubbo:本文中有个代码是new RegistryConfig,这个对象有一个setGroup()方法,因为我们没有调用该方法,所以根目录是dubbo,如果我们setGroup("HR"),那么根目录就会变成HR

dubbo/aa/bb/user:表示本文中的public interface User接口服务

dubbo/aa/bb/user/providers:服务提供者的目录,你可以使用相同的代码,再打开一个IDEA或者Eclipse,然后运行这段代码,此时providers目录下面就会有2条数据

dubbo/aa/bb/user/configurators:服务提供者动态配置相关的元数据信息,后续文章单独讨论

好了本文就到这里,其实非常的简单,主要是想大概过一下dubbo注册到zookeeper之后,节点是什么样子的,要是你写dubbo,也基本就是这样设计节点,没什么出彩的,但是必须要了解一下,方便后续读dubbo注册中心模块源码的时候,知道如何创建节点的

虽然本文没有写consumers的代码,但是聪明的你应该能预见到,如果有consumers,那么应该会在dubbo/aa/bb/user/providers同级目录出现一个dubbo/aa/bb/user/consumers的新目录,没错,确实是这样

相关推荐
是2的10次方啊9 小时前
Dubbo泛化调用:没有接口 Jar,为什么也能调服务?
dubbo
上海运维Q先生2 天前
K8s环境下在Pod中运行Pod中没有的命令-----nsenter
容器·kubernetes·dubbo
J_Anson3 天前
Dubbo架构深度分析
架构·dubbo
ytdbc3 天前
第一次作业
dubbo
量子炒饭大师6 天前
【C++ 入门】Cyber动态义体——【vector容器】vector底层原理是什么?该怎么使用他?一文带你搞定所有问题!!!
开发语言·c++·vector·dubbo
014-code9 天前
Dubbo 之 “最速传说”
java·分布式·dubbo
乐之者v13 天前
multipartFile 或者 inputStream 每次通过 dubbo传输就会报错,怎么处理?
dubbo
摇滚侠14 天前
ElasticSearch 是干什么的,从百度搜索、B 站搜索功能、京东搜索功能,淘宝搜索功能,理解 ElasticSearch 实现了什么功能
elasticsearch·百度·dubbo
Rebecca.Yan15 天前
容器逃逸是什么
docker·dubbo
2601_9491465315 天前
电商通知短信接口开发方案:如何通过API实现订单、发货等自动化短信提醒逻辑
运维·自动化·dubbo