分布式网络通信框架(十二)——zookeeper简介与安装

news2025/1/10 1:24:58

简介

zookeeper(后文简称zk)提供功能有:服务注册中心、全局服务命名、以及分布式锁。
RPC服务会被发布到不同的服务器上,本项目zk的作用就是找到某一个RPC服务在哪一个服务器上,提供服务注册发现功能。

zk的数据如何组织?

znode

在这里插入图片描述

每个znode节点都只存储简单的byte字节数组,一般存少量状态信息,默认数据上限为1MB,我们项目中用来存服务的IP:PORT.

zk的Client常用的命令

Client常用的命令有lsgetcreatesetdelete

在这里插入图片描述

服务注册之后,注册中心和各个服务实例直接建立Session,要求实例们定期发送心跳,有一个心跳计数(定时增加),收到实例心跳后心跳计数恢复,一旦心跳计数超过某一特定值,则认为实例挂了,删除该实例。

临时性ephemeral节点,rpc节点超时未发送心跳消息,zk会自动删除临时性节点;

永久性节点,rpc节点超时未发送心跳消息,zk不会自动删除永久性节点。

zk会在在1/3的Timeout时间向服务提供方发送ping心跳消息,可以使用tcpdump进行测试:sudo tcpdump -i lo port 2181

zookeeper安装和基本使用

tar -zxvf zookeeper-3.4.10.tar.gz

jyhlinux@ubuntu:~/share/zookeeper-3.4.10$ cd conf/
jyhlinux@ubuntu:~/share/zookeeper-3.4.10/conf$ mv zoo_sample.cfg zoo.cfg

使用vim修改zk的配置文件zoo.cfg,将数据目录改为自己指定的路径

/home/jyhlinux/share/zookeeper-3.4.10/data

在这里插入图片描述

运行zk的Server端程序(后台运行)

jyhlinux@ubuntu:~/share/zookeeper-3.4.10/bin$ ./zkServer.sh start

运行zk的Client程序

jyhlinux@ubuntu:~/share/zookeeper-3.4.10/bin$ ./zkCli.sh

zk的Client常用的命令有:ls、get、 create、set 、delete

使用例子:

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
# 查看 zookeeper目录 下有一个子节点 quota
[zk: localhost:2181(CONNECTED) 5] ls /zookeeper 
[quota]
#获取  /zookeeper/quota节点信息, 数据长度为0,孩子数为0
[zk: localhost:2181(CONNECTED) 9] get /zookeeper/quota

cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0

# 根目录下创建了mprpc节点,值为20
[zk: localhost:2181(CONNECTED) 10] create /mprpc 20
Created /mprpc

在这里插入图片描述

# zk删除父节点需要先把子节点删除
[zk: localhost:2181(CONNECTED) 2] create /mprpc/servic 22
Created /mprpc/servic
[zk: localhost:2181(CONNECTED) 3] delete /mprpc
Node not empty: /mprpc
[zk: localhost:2181(CONNECTED) 4] delete /mprpc/servic
[zk: localhost:2181(CONNECTED) 5] delete /mprpc       
[zk: localhost:2181(CONNECTED) 6] 

# zk不能一次创建多级目录,要逐级创建
[zk: localhost:2181(CONNECTED) 10] create /userServiceRpc 22
Created /userServiceRpc
[zk: localhost:2181(CONNECTED) 14] create /userServiceRpc/service_1/service_1_1 22
Node does not exist: /userServiceRpc/service_1/service_1_1
[zk: localhost:2181(CONNECTED) 15] create /userServiceRpc/service_1 11            
Created /userServiceRpc/service_1
[zk: localhost:2181(CONNECTED) 16] create /userServiceRpc/service_1/service_1_1 22
Created /userServiceRpc/service_1/service_1_1

zk的原生开发API编译安装

~/share/zookeeper-3.4.10/src/c$ sudo ./configure

然后需要将Makefile文件中做修改,使gcc不要把编译警告当作错误

~/share/zookeeper-3.4.10/src/c$ sudo vim Makefile

保证下面红圈部分没有 -Werror

在这里插入图片描述

然后再执行以下步骤

~/share/zookeeper-3.4.10/src/c$ sudo make

~/share/zookeeper-3.4.10/src/c$ sudo make install

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-0.11 入口函数main.c详解

Linux-0.11 入口函数main.c详解 模块简介 main.c大部分代码主要是对内核进行初始化,而main.c开始,就都是c语言编写的内核了。 函数详解 time_init static void time_init(void)该函数读取CMOS时钟信息作为系统的开机时间。 struct tm time;do {time…

携手高通,移远通信以全栈式车载产品实力重新定义汽车

5月25日至26日,2023高通汽车技术与合作峰会在苏州成功举办。 移远通信作为高通重要的长期战略合作伙伴,受邀参加此次峰会,并现场展示了支持5G/4G、C-V2X、算力、UWB、Wi-Fi、高精定位等领先技术的多款车规级模组、天线等产品,更有…

Three.js——六、模型对象/材质

模型对象/材质 三维向量 Vector3 与模型位置 该类表示的是一个三维向量(3D vector)。 一个三维向量表示的是一个有顺序的、三个为一组的数字组合(标记为 x、y 和 z), 可被用来表示很多事物,例如&#xff…

Flutter(七)功能型组件

1.导航返回拦截(WillPopScope) 需求:再按一次退出应用 用户在1秒内点击两次返回按钮时,则退出;如果间隔超过1秒则不退出 import package:flutter/material.dart;class WillPopScopeTestRoute extends StatefulWidget…

建筑行业数字化转型,工程管理系统已成建筑行业转型的利器

建筑工程项目管理的困境 专业工种多、工作环境复杂,工期长,且整体工业化标准化程度较低。 进度难管控、项目沟通协作不畅、项目执行过程不透明、项目成本管控难、项目盈亏情况不清、项目难共享等。 什么是工程项目管理 工程项目管理指的是对工程项目…

茶润童心 以茶明礼

中国是茶的故乡,也是茶文化的发源地,茶文化也是中国文化的一部分。5月27日下午,8位武汉公益小天使来到中茶恩施硒茶全国运营中心开展少儿茶艺活动。 开场的自我介绍,公益小天使逐个进行自我介绍,喊着“好名字”互相加…

软件测试的一些关键点

软件测试的一些关键点 随着互联网的快速发展,软件已经成为了我们生活和工作中不可或缺的一部分。在软件开发过程中,一项重要的工作就是软件测试。软件测试是指对软件产品或系统进行验证和验证的过程。在软件测试中,需要注意以下关键点。 首先…

[转]Github进行fork后如何与原仓库同步

问题场景: 新公司要求所有的代码提交都要先通过自己的库提交到主repo上去,所以先在gitlab网页上fork出一个自己的库,在本地修改完代码后提交到远程自己库上,然后在gitlab网页上发起一个merge request请求,然后等待主r…

面试:webpack常用loader和plugin

Webpack简介 Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均…

如何选择专业的低代码开发平台?为企业数字化转型保驾护航

在当今快节奏的商业环境中,软件开发已经成为任何组织的关键方面。然而,由于市场上有无数的软件开发平台,选择合适的平台可能是一项艰巨的任务。对于任何想要创建满足其业务需求的高质量应用程序的组织来说,选择正确的软件开发平台…

英国卡迪夫大学学生使用ChatGPT写论文拿到一等成绩

近日,BBC报道了一则新闻: 卡迪夫大学一名学生在期末考试中使用ChatGPT撰写了一篇论文,并获得了一等成绩,要知道这是英国大学中最高等级的成绩,而他的另一篇论文没有使用ChatGPT,只获得了二等一的成绩。 此…

1.6. 数组

数组是一种数据结构,用于存储相同类型的多个元素。在 Java 中,数组是一个对象,它具有一定数量的连续内存空间。数组中的每个元素都有一个索引,用于访问和操作元素。 1.6.1. 数组的声明与初始化 在 Java 中,可以使用以…

Find My资讯|iOS17将重点改进钱包、Find My、SharePlay和AirPlay等功能

彭博社的马克・古尔曼(Mark Gurman)在最新一期 Power On 时事通讯中表示,苹果即将推出的 iOS 17 系统将改进 Wallet、Find My、SharePlay 和 AirPlay 等多项功能。 古尔曼在博文中还表示苹果会增强 Find My 的位置服务,同样也没…

前端数据可视化开发平台FlyFish数据源应用教程详解

介绍 飞鱼(FlyFish)是云智慧开源的一款免费的数据可视化编排平台。通过简易的方式快速创建数据模型,通过拖拉拽的形式,快速生成一套数据可视化解决方案。在飞鱼产品中可以通过直接连接 MySQL 、 Oracle 等数据库直接从数据源中获…

LiangGaRy-学习笔记-Day17

1、磁盘的介绍 自动分区、手工分区、命令工具分区 1.1、磁盘分类 根据介质来区分: 机械硬盘和固态硬盘 通过盘大小: 3.5英寸和2.5英寸 通过接口分类: SAS、SATA、FC scisi 根据功能: 桌面和企业级别 1.2、磁盘类型 HD…

关于【Stable-Diffusion WEBUI】生成全身图:插件解决面部崩坏问题

文章目录 (零)前言(一)脸难看的问题(1.1)面部修复(1.2)远景脸部问题 (二)面部修复插件(Face Editor)(2.1)模型…

最常见JS加密保护代码的方法

当谈到JavaScript(简称JS)代码的保护时,加密是一种常见的策略。加密可以帮助保护你的JS代码,防止未经授权的访问、修改和复制。在本文中,我将向你介绍一些常用的js加密保护方法,并提供一些通俗易懂的示例代…

如何有效和快速清理C盘

电脑在运行过程中会产生磁盘碎片,时间一长垃圾文件就会越多。而且我们平常不敢乱清理C盘中的文件,以免因为误删导致系统出现故障,所以垃圾文件才肆意占用系统盘空间。不过我们可以选择系统自带的“磁盘清理”功能“制服”它,给C盘…

(转载)多种群遗传算法的函数优化算法

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 1 理论基础 1.1 遗传算法早熟问题 遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应的全局优化概率搜索算法。由于优化时不依赖于梯度,具有很强…

商代数与积代数

商代数 设 R R R使 A < S , ∗ 1 , ∗ 2 , ⋯ , ∗ n > A \left<S, *_1, *_2,\cdots, *_n\right> A⟨S,∗1​,∗2​,⋯,∗n​⟩上的同余关系&#xff0c;则 R R R使 S S S上的等价关系&#xff0c;因此 R R R可诱导出 S S S的一个划分 S / R { [ a ] R ∣ a ∈…