Zookeeper服务注册及心跳机制详解

ZooKeeper提供了一种类似于文件目录的结构来保存key值,其提供了四种key类型,分别是持久节点,临时节点,持久有序节点,临时有序节点。其中临时节点的特性是当创建此节点的会话断开时,节点也会被删除。这一特性非常适合服务注册,可以通过维护一个长期的会话保证临时节点存活,当服务下线时,会话也会关闭,此时节点也会被删除。

了解更多Zookeeper的相关知识可以看下面这篇文章,可以让你快速掌握Zookeeper常用知识。

Zookeeper使用快速入门:基础命令,wacth监控,权限控制icon-default.png?t=N7T8https://blog.csdn.net/dxh9231028/article/details/141105185?spm=1001.2014.3001.5501

服务注册

不同于Nacos,Zookeeper没有提供完全封装好的服务注册方法,而是提供了一种方便于服务注册的数据存储方式,相比Nacos,其自由度更高,更自由,但是用起来也更加繁琐。在使用时我们可以选择第三方驱动,不选择Zookeeper官方驱动,或对官方驱动进行封装都可以。

Zookeeper实现服务注册可以通过在Java代码中创建一个目录/path,然后再其目录下创建当前服务的所有ip和端口(如果是集群的话)对应的节点,/path/obj1,/path/obj2,/path/obj3,然后给这些节点赋值服务的ip和端口。当其他服务想要调用这个服务时,则可以通过轮询或随机算法在Zookeeper中获取/path下的子节点,获取服务的ip和端口。

当服务以外下线时,由于其创建的是临时节点,其对应的节点也会被删除,这样其他服务在访问此服务时便不会访问到已经下线的服务,这样可以保证不会因为服务意外下线而导致其他服务访问此服务时,偶尔会找不到ip端口的问题。

假设一个系统值有一个用户服务集群和一个订单服务集群,他们使用zookeeper注册服务并相互调用,那么他们的结构如下图

心跳机制

临时节点的存活需要会话一直存在,那么如何让会话一直存活呢?

在了解这个问题之前,我们需要了解什么是会话。会话是ZooKeeper在应用程序内部维护的逻辑关系,用来管理与客户端的交互。会话并不是网络层面的东西,虽然它依赖于TCP连接进行通信,但即使TCP连接暂时断开,只要会话未到期或未被删除,它仍然可以在重新连接后继续存在。

那么Zookeeper是如何处理会话的删除操作的呢?

当客户端连接ZooKeeper时,需要指定一个会话超时时间。如果未指定,则会使用ZooKeeper的默认超时时间。客户端需要在此超时时间内与ZooKeeper进行交互,否则ZooKeeper将认为客户端已经失效,并关闭会话,同时主动关闭TCP连接。因此,为了让会话持续存在,客户端必须定期向ZooKeeper发送信号。

这一需求的实现就是心跳机制。通过心跳机制,客户端可以在大部分时间处于休眠状态,仅在需要发送信号,维持会话存活时被唤醒以发送心跳信号,从而有效地节省系统资源。这种周期性的心跳机制确保了会话在长时间内保持活跃状态,使临时节点得以继续存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive SQL语言

目录 Hive SQL之数据库与建库 create database :创建数据库 use database :选择特定的数据库 drop database :删除数据库 Hive SQL之表与建表 create table : 创建表 分隔符指定语法 Hive SQL-DML-Load加载数据 Load语法功能 语法规则之filepath 语法规则之LOCAL …

区块链变革:Web3时代的数字化前沿

随着科技的飞速发展,数字化正在深刻影响着我们生活的方方面面。区块链技术作为一种新兴的去中心化技术,正成为推动这一变革的重要力量。特别是在Web3时代,区块链的作用不仅仅局限于加密货币,而是延伸到了各个领域,成为…

VMware虚拟机nat无法联通主机

VMware在nat模式下主机无法ping通虚拟机 原因: 虚拟机和对应的网卡不在一个网段 虚拟机开启了防火墙 解决方法: 首先判断虚拟机的网络ip是否和网卡在一个网段上 判断虚拟机使用的网卡 nat模式在VMware虚拟机中一般只有一个对应的网卡 如图笔者的nat网卡为VM…

【机器学习】全景指南:从基础概念到实战流程的全面解析

文章目录 1.引言1.1机器学习的重要性1.2机器学习的应用范围1.3本文的内容结构 2. 机器学习的基本概念与分类2.1 机器学习的定义2.2 机器学习的分类 4. 强化学习(Reinforcement Learning) 3. 机器学习的工作流程3.1 数据收集与准备1. 数据源与类型2. 数据…

26.删除有序数组中的重复项---力扣

题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-duplicates-from-sorted-array/descript…

STM32新建项目

一、学习背景 需要做一个机械臂项目,打算用STM32做微控制器,所以需要学习STM32的相关应用,再将其应用到机械臂上。 二、相关硬件与软件 硬件:STM32F103;显示屏;stlink;传感器模块&#xff1b…

深入理解 C# 中的 dynamic 类型详解与示例

文章目录 1. 什么是 dynamic 类型?2. dynamic 的工作原理3. dynamic 类型的使用4. 使用 dynamic 的场景5. dynamic 的优缺点6. dynamic 类型的注意事项7. 总结 在 C# 编程中,dynamic 类型是一个非常特殊的类型,它在编译时并不会进行类型检查&…

SOL项目开发代币DApp的基本要求、模式创建与海外宣发策略

Solana(SOL)作为一个高性能区块链平台,以其快速的交易速度和低交易成本吸引了大量开发者和投资者。基于Solana开发的去中心化应用程序(DApp)和代币项目正逐步成为区块链领域的重要组成部分。要成功开发并推广一个SOL项…

VM相关配置及docker

NAT——VMnet8网卡 桥接——WLAN/网线 仅主机——VMnet1网卡 docker与虚拟机的区别 启动docker服务 systemctl start docker 重启 systemctl start docker关闭docker服务 systemctl stop docker.servicedocker的两大概念 镜像:images,应用程序的静态文…

Agentic Security:一款针对LLM模型的模糊测试与安全检测工具

关于Agentic Security Agentic Security是一款针对LLM模型的模糊测试与安全检测工具,该工具可以帮助广大研究人员针对任意LLM执行全面的安全分析与测试。 请注意 Agentic Security 是作为安全扫描工具设计的,而不是万无一失的解决方案。它无法保证完全防…

魔珐科技出席WWEC教育者大会,给出AI时代教培行业精细化运营赋能方案

AI与教育的结合,已经成为教育行业发展的关键增长点。头部机构纷纷寻求AI技术与产品融合,以增强市场竞争力,希望在这场技术引发的行业洗牌中保持领先。 喜忧之中,展望未来,教培机构如何继续找准航向,贴近政…

零基础5分钟上手亚马逊云科技 - 网络安全分析最佳实践

简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

Zotero 常用插件介绍

1. Zotero 插件安装方法 下载以 .xpi 结尾的插件;打开 Zotero → 工具 → 插件 → 右上小齿轮图标 → Install Add-on From File ... → 选择下载好的 .xpi 插件安装 → 重启 Zotero 2. 常用插件介绍 2.1. Scholaread - 靠岸学术 Zotero 英文文献相关插件&#xf…

前端调用后端,出现跨域报错怎么办

我前端是vue,后端是其他同事写的python,因为部署在不同的机器上,我前端如果直接调用他的python,axios请求就会出现跨域报错,如下 blocked by CORS policy 云云 怎么办呢,网上探索了一下午,才找…

[数据集][目标检测]机械常用工具检测数据集VOC+YOLO格式4713张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4713 标注数量(xml文件个数):4713 标注数量(txt文件个数):4713 标注…

HoloLens 和 Unity 空间坐标系统 Coordinate systems

坐标系统 Spatial coordinate systems 所有的 3D 图形应用程序都使用笛卡尔坐标系统来推理虚拟物体的位置和朝向。 这些坐标系建立三个垂直轴:X、Y 和 Z。 添加到场景的每个对象在其坐标系中都有一个 XYZ 位置。 Windows 调用在物理世界中具有实际意义的坐标系统…

线程池介绍

1.线程池简介 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class CallableDemo {public sta…

视频美颜SDK与直播美颜工具的架构设计与性能优化

本篇文章,小编将深入讲解视频美颜SDK与直播美颜工具的架构设计,并分享一些性能优化的实践经验。 一、视频美颜SDK的架构设计 视频美颜SDK的核心在于其模块化的设计思路。通常,视频美颜SDK由以下几个主要模块组成: 1.图像预处理…

自主身份:Web3如何重新定义个人数据所有权

随着数字时代的快速发展,个人数据成为了一种新型的资产,深刻影响着我们的生活。然而,在Web2时代,个人数据往往被科技巨头所掌控,用户在享受互联网服务时,无意中失去了对自己数据的控制权。Web3的到来&#…

伦敦银行情的软件有什么选择?

普通投资者做伦敦银交易,多以技术分析为主、基本分析为辅的方法作为自己的交易策略,既然提到技术分析,那么伦敦银行情的软件就至关重要,因为我们需要通过这些软件才能看到行情并进行分析,那看伦敦银行情的软件有什么好…