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的新目录,没错,确实是这样

相关推荐
发仔1233 天前
Dubbo介绍及示例用法
java·dubbo
初九之潜龙勿用4 天前
文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
开源·dubbo·文心一言
FPGA之旅5 天前
FPGA从零到一实现FOC(一)之PWM模块设计
fpga开发·dubbo
微风粼粼5 天前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
百度Geek说8 天前
搜索数据建设系列之数据架构重构
数据仓库·重构·架构·spark·dubbo
单线程的Daniel8 天前
Dubbo RPC 序列化问题记录
windows·rpc·dubbo
武子康8 天前
Java-63 深入浅出 分布式服务 网络通信 RPC 与 RMI 详解
java·开发语言·网络·分布式·spring·rpc·dubbo
迢迢星万里灬20 天前
Java求职者面试指南:微服务技术与源码原理深度解析
java·spring cloud·微服务·dubbo·netty·分布式系统·面试指南
掉头发的王富贵1 个月前
如何将Dubbo从Zookeeper平滑地迁移到Nacos?
后端·zookeeper·dubbo
异常君1 个月前
Dubbo 与 Spring Cloud Gateway 技术对比:微服务架构中的协同实践
spring cloud·微服务·dubbo