Mac 安装ZooKeeper+kafka基本使用

news2024/11/27 19:52:54

为什么 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博客

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

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

相关文章

【AIGC】服务于人类|一种新的人工智能技术

文章目录前言 一、AIGC的自我介绍 二、AIGC八大领头羊——生成式人工智能八大领头羊 1.Character.AI 2.Open AI 3.Midjourney 4.Stability AI 5.Tome 6.Anthropic 7.Hugging Face 8.Jasper 三、AIGC用来干嘛? 四、AIGC当今弊端 4.1 法律法规完善程度低 4.2 数据要素…

二叉树进阶练习

目录 一、根据二叉树创建字符串 二、二叉树的最近公共祖先 三、二叉搜索树与双向链表 四、从前序与中序遍历序列构造二叉树 五、从中序与后序遍历序列构造二叉树 六、二叉树的前序遍历(非递归实现) 七、二叉树的中序遍历(非递归实现&a…

免杀对抗-Python-混淆算法+反序列化-打包生成器-Pyinstall

Python-MSF/CS生成shellcode-上线 cs上线 1.生成shellcode-c或者python 2.打开pycharm工具,创建一个py文件,将原生态执行代码复制进去 shellcode执行代码: import ctypesfrom django.contrib.gis import ptr#cs#shellcodebytearray(b"生…

RocketMQ整体架构及NameServer源码分析

RocketMQ源码深入剖析 1 RocketMQ介绍 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠…

无涯教程-JavaScript - ISLOGICAL函数

描述 如果指定的值或表达式的计算输出为逻辑值,即True或False,则ISLOGICAL函数将返回逻辑值TRUE。否则返回FALSE。 语法 ISLOGICAL (value)争论 Argument描述Required/OptionalvalueValue or expression.Required Notes 您可以在执行计算之前使用此功能测试单元格的内容。…

《机器学习核心算法》分类算法 - 朴素贝叶斯 MultinomialNB

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 朴素贝叶斯 1、朴素贝叶斯API2、朴素贝叶斯算法实际应用2.1、获取数据集2.2、划分…

【译】怎样修改 HashMap 的 Key?

原文地址:https://www.baeldung.com/java-hashmap-modify-key 1. 概述 在 Java 中,HashMap 是一个广泛使用的数据结构,它以键值对的形式存储元素,提供快速的数据访问和检索。有时,在使用 HashMap 时,我们…

【算法题】1222. 可以攻击国王的皇后

题目: 在一个 8x8 的棋盘上,放置着若干「黑皇后」和一个「白国王」。 给定一个由整数坐标组成的数组 queens ,表示黑皇后的位置;以及一对坐标 king ,表示白国王的位置,返回所有可以攻击国王的皇后的坐标(…

重启人生,重新出发

Hello, World! 我是EarlGrey,这是时隔两年多后在公众号第一次发文。也许有些老朋友已经忘记我了,也有少数朋友是最近才开始关注的,所以谈正题之前,我先花点时间介绍一下自己。 我是谁 我是英语专业出身,从北外高翻毕业…

使用 SimPowerSystems 的混合技术风电场的无功功率管理(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

什么是 JxBrowser

什么是 JxBrowser 文章目录 什么是 JxBrowser如何使用 JxBrowser容易集成支持的平台Java丰富的文档如何运行主要功能值得信赖成熟的专业技术团队及时的支持与帮助参考资料 JxBrowser 是一个商业跨平台 Java 库,可以让您将基于 Chromium 的网页浏览器控件集成到您的 …

【ES实战】ES中关于segment的小结

文章目录 ES中关于segment的小结ES中segment相关的原理在Lucene中的产生segment的过程。(Lucene commit过程)ES为了实现近实时可查询做了哪些缩短数据可被搜索的等待时长增加数据的可靠性优化segment的数量 段合并自动合并强制合并 相关配置translog合并…

Python 学习之路 03 之循环

😀前言 欢迎来到 Python 循环和流程控制的基础教程!无论您是一名新手,还是希望复习 Python 编程的基本知识,这个教程都是一个非常好的资源。在这份教程中,我们将探索 Python 中的不同循环结构和流程控制机制&#xff0…

火山引擎DataWind产品可视化能力揭秘

引言 BI是商业智能(Business Intelligence)的缩写,是一种将企业中现有的数据进行有效的整合的平台,它可以帮助企业、组织和个人更好地了解其业务状况、发现问题,并进行决策。BI产品普遍采用可视化的方式,可以帮助用户更直观、更高…

快速傅里叶变换

引言 目标 傅里叶变化(Fourier transform)是一种信号处理技术,它可以将时间信号转换为频率信号,即将一组具有相同数量频率的正弦波叠加在一起,形成一组新的正弦波。如果我们把时间信号从频域转换到时域,那么…

Drupal __ 8.5.0 __ XSS文件上传 __CVE-2019-6341

Drupal __ 8.5.0 __ XSS文件上传 __CVE-2019-6341 说明内容漏洞编号CVE-2019-6341漏洞名称Drupal XSS漏洞漏洞评级中危影响范围在7.65之前的Drupal 7版本中; 8.6.13之前的Drupal 8.6版本; 8.5.14之前的Drupal 8.5版本。漏洞描述Drupal诞生于2000年,是一…

PbootCMS在搭建网站

1、打开网站 https://www.pbootcms.com/ 2、点击 “本站” 下载最新的网站代码 3、在本地laragon/www下创建目录(hejuwuye),并将代码放进去 4、创建本地数据库,数据库名称为: hejuwuye,然后将static/bac…

25.Xaml DateGrid控件---->默认单选,可以多项选择的网格控件

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

深入理解JVM虚拟机第五篇:一些常用的JVM虚拟机(二)

文章目录 一&#xff1a;JRockit VM的介绍 二&#xff1a;J9 VM的介绍 三&#xff1a;KVM和CDC/CLDC Hotspot 四&#xff1a;Azul VM的介绍 五&#xff1a;Liquid VM的介绍 六&#xff1a;Apache Harmoney 七&#xff1a;Microsoft JVM 八&#xff1a;Taobao JVM 九&a…

第三方软件测试机构有哪些测试服务软件测试报告收费标准是怎样的?

软件验收机构 一、什么是第三方软件测试机构? 第三方软件测试机构是区别于软件开发公司以及软件需求方的第三方机构&#xff0c;软件企业将软件测试外包给第三方软件测试机构已经成为了行业发展趋势。既省心省力&#xff0c;又降低企业成本&#xff0c;得出的软件测试结果以…