Mac 安装ZooKeeper+kafka基本使用

2023-09-13 16:54:35

为什么 Kafka 依赖 ZooKeeper?

下面ZooKeeper基本介绍:

1、基本功能

ZooKeeper 为分布式系统提供了一种配置管理的服务:集中管理配置,即将全局配置信息保存在 ZooKeeper 服务中,方便进行修改和管理,省去了手动拷贝配置的过程,同时还保证了可靠和一致性。

2、命名服务

  在分布式系统中,经常需要对应用或者服务进行统一命名,便于识别和区分开来,而 ZooKeeper 就提供了这种服务。

3、分布式锁

  锁应该都不陌生,没有用过也听说过,在多个进程访问互斥资源的时候,需要加上一道锁。在分布式系统中,分布式程序分布在各个主机上的进程对互斥资源进行访问时也需要加锁。

  分布式锁应当具备以下条件:

  • 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
  • 高可用的获取锁与释放锁;
  • 高性能的获取锁与释放锁;
  • 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误);
  • 具备锁失效机制,防止死锁;
  • 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。
4、集群管理

  在分布式系统中,由于各种各样的原因,例如机器故障、网络故障等,导致集群中的节点增加或者减少,集群中有些机器需要感知到这种变化,然后根据这种变化做出对应的决策。

我们需要知道以下几点:

  • Client 表示客户端,是请求发送方,数量不限;
  • Server 表示服务端,是请求接收方,数量不限;
  • Client 可以连接到每个 Server,每个 Server 中的数据都是一样的;
  • ZooKeeper 启动时,会从所有 Server 中选取一个作为 leader(Paxos 协议),每个 follower 都会和 leader 建立连接;
  • leader 负责进行数据更新等操作,并将数据同步到 follower 中,以此实现数据一致性。

znode( ZooKeeper 的数据节点) 有四种类型 :

1)PERSISTENT(持久节点

  默认的节点类型。持久化保存的节点,创建节点的客户端与 ZooKeeper 断开连接后,该节点依旧存在 。

2)PERSISTENT_SEQUENTIAL(持久顺序节点)

  所谓顺序节点,就是在创建节点时,ZooKeeper 根据创建的时间顺序给该节点名称进行编号,适合用于分布式锁、分布式选举等场景。创建时添加 -s 参数即可。

3)EPHEMERAL(临时节点)

  和持久节点相反,当创建节点的客户端与 ZooKeeper 断开连接后,临时节点会自动删除,适用于心跳、服务发现等场景。创建时添加参数-e 即可。

4)EPHEMERAL_SEQUENTIAL(临时顺序节点)

  顾名思义,该类节点结合了临时节点和顺序节点的特征,在创建节点时,ZooKeeper 根据创建的时间顺序给该节点名称进行编号,当创建节点的客户端和 ZooKeeper 断开连接后,节点自动删除。创建时添加 -e -s 参数即可。

ZooKeeper 实现分布式锁就是利用了临时顺序节点。

 首先在 ZooKeeper 中创建一个持久节点 ParentLock,每当有客户端想要获得锁时,就在 ParentLock 下创建一个临时顺序节点,如果该节点是第一个,则获得锁,如果不是,则找到排序比它靠前的一个节点并注册 Watcher,用于监听节点是否存在。若第一个节点运行完毕,其客户端会调用指令删除该节点,或者其客户端崩溃,第一个节点也会自动删除,而第二个节点监听到该节点被删除,再经过查询确认就能获得锁了。不难发现 ZooKeeper 实现的分布式锁相当于是一个等待锁的队列,能够提升抢锁的效率,但是因为需要创建和删除节点,导致性能较低。

为什么 Kafka 依赖 ZooKeeper?_kafka依赖zookeeper_freshru的博客-CSDN博客

zooKeeper

#下载到目录usr/local下解压并且重命名

wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz

tar zxvf apache-zookeeper-3.8.1-bin.tar.gz



#创建data目录
#修改.cfg文件
cd zookeeper
mkdir data

cd conf 
mv mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改
/data路径为
/usr/local/zookeeper/data
根据需求添加端口号配置
admin.serverPort=1234




# bin目录下
./zkServer.sh start  # 启动,这样启动是单机启动。
./zkServer.sh close  # 关闭
./zkServer.sh status # 查看状态



设置开机自启
cd /etc/rc.d/init.d
vim zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/local/jdk/jdk8
case $1 in
        start) su root /usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg;;
        stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;
        status) su root /usr/local/zookeeper/bin/zkServer.sh status;;
        restart) su /usr/local/zookeeper/bin/zkServer.sh restart;;
        *) echo "require start|stop|status|restart" ;;
esac



# 启动服务
chkconfig --add zookeeper 
service zookeeper start



# 进入zookeeper的目录
//启动zookeeper服务端 -指定配置文件cong/zoo.cfg
sudo ./bin/zkServer.sh --config conf start
//启动zookeeper客户端   
sudo ./bin/zkCli.sh -server 127.0.0.1:2181
//查看zookeeper启动状态
./bin/zkServer.sh status



# 使用zookeeper命令,测试是否启动成功 
//创建节点key
 create /queue
//创建临时顺序节点
create -e -s /queue/host1
//查看创建的节点信息
 ls -R /queue

1、下载kafka安装包

使用kafka集成zookeeper
 cd /usr/local/kafka/kafka_2.12-3.1.0/bin 

//启动zookeeper应用程序

./zookeeper-server-start.sh ../config/zookeeper.properties

如果启动报错:INFO ZooKeeper audit is disabled. 

修改../config/zookeeper.properties
添加audit.enable=true

然后重新启动

Apache Download Mirrors https://www.apache.org/dyn/closer.cgi?path=/kafka/3.1.0/kafka_2.12-3.1.0.tgz

将压缩文件移动到自己的software

mv kafka_2.12-3.1.0.tgz /Users/xiansongliu/Downloads/kafka 

解压压缩文件

tar -zxvf kafka_2.12-3.1.0.tgz 

将安装包移动到/usr/local

sudo mv kafka_2.12-3.1.0 /usr/local/kafka



启动kafka
./bin/kafka-server-start.sh -daemon config/server.properties

kafka消息交互

1、创建一个topic

 ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test 

2、查看创建的topic

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

消息通信

 ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test 

1、在kafka服务端发送消息 

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

2、此时客户端接收到消息

 zookeeper安装教程_zookpeer安装_北漂人Java的博客-CSDN博客

mac 安装kafka教程_mac安装kafka_北漂人Java的博客-CSDN博客

更多推荐

在ubuntu18.04上编译C++版本jsoncpp/opencv/onnxruntime且如何配置CMakelist把他们用起来~

这篇文章背景是笔者在ubuntu上编译C++代码,依赖一些包,然后需要编译并配置到CMakelist做的笔记。主要也是一直不太懂CMakellist,做个笔记以防忘记,也给读者提供一站式的参考,可能您需要的不是这几个包,但大同小异,再带上cmakelist加持,最后提供可视化远程调试教程,可以把C++玩的飞起。这篇文章

Spring Boot的魔法:构建高效Java应用的秘诀

文章目录1.自动配置(Auto-Configuration)2.起步依赖(StarterDependencies)3.内嵌Web服务器(EmbeddedWebServer)4.外部化配置(ExternalizedConfiguration)5.SpringBootActuator6.SpringBootDevTools

Zebec 生态 AMA 回顾:Nautilus 以及 $ZBC 的未来

在9月7日,Zebec创始人Sam做客社区,并进行了“NautilusChain以及$ZBC的未来”主题的AMA访谈。Sam在本次访谈中对NautilusChain生态的价值捕获、Zebec生态布局规划、可能会推出的NautilusChain治理通证NAUT进行了解读。本文将对本次AMA进行回顾与总结。主持人:社区新的

Android12之/proc/pid/status参数含义(一百六十五)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:如何获取

PriorityQueue初始化和方法

PriorityQueue概述PriorityQueue`是Java中的一个数据结构,它是一个优先队列实现,可以用来存储一组元素,并根据其优先级进行排序和检索。优先队列是一种特殊的队列,其中元素被赋予了优先级,高优先级的元素在队列中排在低优先级元素的前面。以下是PriorityQueue的一些重要特性和用法:基本特性:

【四】3D Object Model之创建Creation——read_object_model_3d()算子

😊😊😊欢迎来到本博客😊😊😊🌟🌟🌟Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有时间会更新具体案例。😊😊😊具体食用方式:可以点击本专栏【Halcon算子快速查找】–>搜索你要查询的算子名称;或者点击Halcon算子汇总博客,即可食用。🎁�

9月18日,每日信息差

今天是2023年09月19日,以下是为您准备的11条信息差第一、江苏无锡首次获得6000年前古人类DNA第二、全球天然钻石价格暴跌。数据显示,国际钻石交易所钻石价格指数在2022年3月达到158的历史峰值,之后一路下跌到目前的110左右,创近5年来新低,跌幅达约3成第三、海关总署:开展海关筑牢国家生物安全屏障、全面提升

TypeScrtpt学习

TypeScript开发环境搭建安装TS下载TS的编译器,它能够把TS文件转为JS文件。npminstall-gtypescript编译TS手动编译:使用tsc命令将一个TS文件转为JS文件。tscindex.ts//如果报错ts-node:无法将“ts-node”项识别为cmdlet、函数、脚本文件或可运行程序的名称

RP-母版 流程图 发布和预览 团队项目

母版创建一个模版,可根据形态不同引用不同母版。若不想母版受页面变化影响,也可以在引用时脱离母版创建母版:1)转换为母版2)在母版页面中添加母版拖放行为拖放行为,在母版名称上右键,、任意位置可以拖到任意位置固定位置页面引用的位置要与母版一致脱离母版引用的页面不收母版影响引用母版像拖动元件一样拖动,概要面板中母版前面会不同

哪种IP更适合你的数据抓取需求?

程序员大佬们好!今天我要和大家分享一个关于数据抓取的话题,那就是Socks5爬虫ip和动态IP之间的比较。在进行数据抓取时,选择适合自己需求的工具和技术是非常重要的。Socks5爬虫ip和动态IP都是常见的网络工具,它们在数据抓取方面都有各自的优势和特点。那么,Socks5爬虫ip和动态IP之间哪个更适合你的数据抓取需

计算机网络工程师多选题系列——操作系统

得多选者得天下啊同志们!摘录按照章节顺序,但事实上各章节习题有交叉。1操作系统1.1操作系统概论操作系统的主要功能:进程管理、存储管理、文件管理、设备管理和用户接口。操作系统的主要功能——设备管理:为用户程序提供系统调用接口、提供缓冲技术、管理通道、网卡等相关数据结构、提供虚拟设备技术。存储管理:包括内存的分配与回收和

热文推荐