自定义服务的服务注册- 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);
    }
}
相关推荐
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun2 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
Thomas.Sir2 天前
第21课:PyTorch|GPU多卡训练与分布式训练基础【让多卡并行成为你的加速引擎】
人工智能·pytorch·分布式
Cicada1282 天前
库存消息消费的正确性设计——从幂等窗口到批量流水线
分布式·系统架构
不吃香菜kkk、2 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove2 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21
春天花会开1313 天前
Supabase 自部署 Edge Functions 超时从 60s 延长到 360s 完整复盘
运维·云原生
Francek Chen3 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式