首页 > 编程语言 >zookeeper虚拟机使用和java api使用zookeeper案例

zookeeper虚拟机使用和java api使用zookeeper案例

时间:2024-02-14 18:55:26浏览次数:24  
标签:java String 虚拟机 zookeeper 节点 new import public

zookeeper动物园管理员

中间件,提供协调服务

作用于分布式系统,发挥其优势,可以为大数据服务

支持java,提供java和c语言的客户端api

什么是分布式系统?

很多台计算机组成一个整体,一个整体一致对外并且处理同一请求

内部的每台计算机都可以相互通信(rest/rpc)

客户端到服务端的一次请求到相应结束会经历多台计算机

zoopkeeper的特性

一致性:数据一致性,数据按照顺序分批入库

原子性:事务要么成功要么失败,不会局部化

单一视图:客户端连接集群中任一zk节点,数据都是一致性的

可靠性:每次对zk的操作状态都会保存在服务端

实时性:客户端可以读取到zk服务端的最新数据

jdk的安装

下载linux的jsk1.8.tar,上传至linux服务器

解压缩jdk,配置jdk

测试:java -version

单机zookeeper安装

zookeeper下载,安装以及配置环境变量

zookeeper文件夹主要目录介绍

zookeeper配置文件介绍,运行zk

zoo.cfg配置

tickTime:用于计算时间单元。比如session超时:N*tickTime

initLimit:用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示

syncLimit:用于集群,master主节点与从节点之间发消息,请求和应答时间长度(心跳机制)

dataDir:必须配置

dataLogDir:日志目录。如果不能配置会和dataDir公用

clientPort:连接服务器的端口,默认2181

zookeeper基本数据模型介绍

是一个树形结构,类似于前端开发中的tree.js组件

zk的数据模型也可以理解为linux/unix的文件目录:/usr/local/..

每一个节点都称为znode,它可以有子节点,也可以有数据

每个节点分为临时节点和永久节点,临时节点在客户端断开后消失

每个zk节点都有各自的版本号,可以通过命令行来显示节点信息

每当节点数据发生改变,那么该节点版本号会累加(乐观锁)

删除/修改过时节点,版本号不匹配则会报错

每个zk节点存储的税局不宜过大,几k即可

节点可以设置权限acl,可以通过权限来限制用户的访问

zookeeper数据模型的基本操作

客户端连接

./zkServer.sh start

./zkCli.sh

查看znode结构

关闭客户端连接

zookeeper的作用体现

maser节点选举,主节点挂了以后,从节点就会接收工作,并且保证这个节点但是唯一的,这就是所谓的首脑模式,从而保证我们的集群是高可用的。

发布与订阅,雷氏消息队列MQ(amq,rmq,),dubbo发布者把数据存在znode上,订阅者会读取这个数据

提供分布式锁,分布式环境中不同进程之间争资源,类似于多线程中的锁

统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算机中用的特别多

集群管理,集群中保证数据的强一致性

zk特性-session的基本原理

客户端与服务端之间的连接存在会话

每个会话都可以设置一个超时时间

心跳结束,session则过期

session过期,则临时节点znide会被抛弃

心跳机制:客户端向服务端的ping包请求

zk常用命令

通过./zkCli.sh打开zk的客户端进行命令行后台

ls与ls2命令

get与stat命令

create命令

create -e /imooc/tmp 无序

create -s /imooc/sec seq 顺序

set命令(改变dataVersion)

set /imooc data-imooc 1(跟版本号的需要最新版本号)

delete命令

和set一样不带版本号能执行,带版本号就要最新的版本号

zk特性-watcher的基本原理

针对每个节点的操作,都会有一个监督者->watcher

当监控的某个对象(znode)发生了变化,则触发watcher时间

zk中的watcher是一次性的,触发后立即销毁

父节点,子节点 增删改都能触发器watcher

针对不同类型的操作,触发的watcher时间也不同:

1.(子)节点创建事件

2.(子)节点删除事件

3.(子)节点数据变化事件

stat /test watch

get /test watch

父节点触发事件

创建父节点触发

WATCHER::
Created /test
WatchedEvent state:SyncConnected type:NodeCreated path:/test

修改父节点触发

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/imooccZxid = 0x4

删除父节点触发

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/test

子节点触发事件

创建子节点触发父节点watch事件

WATCHER::Created /imooc/abc

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/imooc

删除子节点触发父节点watch事件

WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/imooc

修改子节点不会触发父节点watch事件

watcher的使用场景

统一资源配置

acl权限控制

针对节点可以设置相关读写等权限,目的为了保障数据安全性

权限permissions可以指定不同的权限范围以及角色

acl命令行

getAcl:获取某个节点的acl权限信息

setAcl:设置某个节点的acl权限信息

addauth:输入认证授权信息,注册时输入明文密码(登录)

但是在zk的系统里,密码是以加密的形式存在

Acl的构成

zk的acl通过[scheme

标签:java,String,虚拟机,zookeeper,节点,new,import,public
From: https://www.cnblogs.com/15078480385zyc/p/18015426

相关文章

  • javascript import export 简单示例
    概述import是ES6引入的新特性,它允许你以声明式的方式导入其他模块中的内容。require是Node.js中的特性,它允许你使用一个函数来加载和导入其他模块。使用方法utils.jsexportconstadd=(a,b)=>a+b;exportconstsubtract=(a,b)=>a-b; index.jsimport*asutilsfrom......
  • 短路在JavaScript中是如何工作的?
    在JavaScript中,理解真实和虚假的值是编写高效简洁代码的基础。结合短路的概念,开发人员可以编写优雅的解决方案来应对常见的编程挑战。在本实践指南中,我们将探讨真实值和虚假值,并了解JavaScript中短路的机制。您可以从这里获取所有源代码。(本文内容参考:java567.com)目录了......
  • 如何在 JavaScript 中比较两个日期 – 技术、方法和最佳实践
    在JavaScript中,您可以使用date对象有效地处理应用程序中的日期、时间和时区。Date对象可帮助您有效地操作数据、处理各种与日期相关的任务,并在创建实际应用程序时执行一些计算。(本文内容参考:java567.com)在本文中,我们将了解以下主题:日期比较概述日期比较在JavaScript......
  • java 工厂模式
    工厂模式(FactoryPattern)是Java中常用的一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。Java中的工厂模式主要有三种:简单工厂模式(SimpleFactoryPattern)、工厂方......
  • java 抽象工厂模式
    抽象工厂模式(AbstractFactoryPattern)是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单个工厂,而不需要指定它们的具体类。在抽象工厂模式中,每个工厂都负责创建一组产品(通常是一系列产品或产品线),这些产品通常相互关联或有某种约束。在Java中实现抽象工厂模式,你通......
  • Linux虚拟机开启键盘灯
    在/bin目录下新建led这个文件status=/tmp/keyboard_led_statusif[[${1}=="on"]]||[[!-e${status}]];thenxsetlednamed'ScrollLock'&&echo"on">${status}elsexset-lednamed'ScrollLock'&......
  • 【常见java错误】arthas的使用、常用命令
    arthas的使用arthas是一款强大的Java诊断工具,可以帮助开发者快速定位和解决Java应用程序中的问题。本文将介绍arthas的基本使用方法,包括安装、启动、基本命令和高级功能。一、安装arthas1.1Windows系统在Windows系统中,可以通过以下步骤安装arthas:访问arthas的GitHub发布页......
  • JAVA并发之PriorityBlockingQueue
    PriorityBlockingQueue(优先阻塞队列)是Java并发包java.util.concurrent下面的一个工具类,它除了具有阻塞队列的功能外还具有以下特点:对队列中的元素进行排序,如果未指定比较器,插入队列的元素必须实现Comparable接口内部基于数组实现的最小二叉堆算法队列的长度是可扩展的(类似Ar......
  • centos虚拟机安装
    目录一、准备工作1、vmwareworkstation软件安装2、准备ios镜像二、创建Centos虚拟机三、进行Centos7的系统安装四、虚拟机快照的使用1、创建虚拟机快照2、还原虚拟机快照一、准备工作1、vmwareworkstation软件安装可以直接去官网下载官网链接:https://www.vmware.com或者这......
  • Java基础
    java基础一、注释二、标识符和关键字关键字:标识符Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。标识符注意点:所有的标识符都应以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合......