自定义服务的服务注册- zookeeper

自定义服务的服务注册- zookeeper

服务注册使用 zookeeper 的大致过程如下

  1. 链接 zookeeper 集群或者单机
  2. 注册自己的 ip + 端口到 zookeeper 的 node(这个 node 要是临时节点的,因为可以保证健康检查以及服务发现的高可用

编码实现

java 复制代码
package com.rpc.custom_rpc.registery;

import com.rpc.custom_rpc.config.CustomRpcConfig;
import com.rpc.pre.zookeeper.curator.ZkCuratorFrameworkServerOps;
import org.apache.zookeeper.CreateMode;

import java.nio.charset.StandardCharsets;

/**
 * @author xl-9527
 * @since 2024/12/14
 **/
public class ServerRegistryImpl implements ServerRegistry {
    private final String ip;
    private final int port;
    private final ZkCuratorFrameworkServerOps zkCuratorFrameworkServerOps;

    public ServerRegistryImpl(final String ip, final int port) {
        this.ip = ip;
        this.port = port;
        this.zkCuratorFrameworkServerOps = new ZkCuratorFrameworkServerOps();
    }

    @Override
    public void registry(final String serviceName) {
        // 基础的路径注册为永久节点
        final String path = CustomRpcConfig.BASE_PATH + serviceName;
        if (!zkCuratorFrameworkServerOps.exists(path)) {
            zkCuratorFrameworkServerOps.createNode(path, null, true);
        }

        // 创建临时节点,这其实就是我们的服务的元数据信息
        zkCuratorFrameworkServerOps.createNode(path + "/" + ip + ":" + port, (ip + ":" + port).getBytes(StandardCharsets.UTF_8), CreateMode.EPHEMERAL);
    }
}
相关推荐
ascarl201022 分钟前
准确--Kubernetes 修改 NodePort 端口范围操作文档
云原生·容器·kubernetes
‘胶己人’1 小时前
redis分布式锁
数据库·redis·分布式
山沐与山1 小时前
【MQ】Kafka与RocketMQ深度对比
分布式·kafka·rocketmq
武子康1 小时前
Java-203 RabbitMQ 生产者/消费者工作流程拆解:Connection/Channel、默认交换器、ACK
java·分布式·消息队列·rabbitmq·erlang·ruby·java-rabbitmq
小满、2 小时前
RabbitMQ: 同步异步解析、安装与控制台实践
分布式·消息队列·rabbitmq·mq
少陽君2 小时前
Kubernetes Debug 专用镜像实践指南
云原生·容器·kubernetes
ssxueyi3 小时前
大数据技术之Zookeeper介绍、部署
大数据·zookeeper·debian
木风小助理3 小时前
云原生热点聚焦:OpenTofu 1.11.0 发布与关键工具更新
云原生
小嘟嘟133 小时前
Kurator深度解析:云原生多集群管理的高效解决方案
linux·运维·docker·云原生·自动化
金海境科技3 小时前
【服务器数据恢复】数据中心私有云Ceph分布式集群文件丢失数据恢复案例
服务器·经验分享·分布式·ceph