Mac 安装ZooKeeper+kafka基本使用

为什么 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.gztar zxvf apache-zookeeper-3.8.1-bin.tar.gz#创建data目录
#修改.cfg文件
cd zookeeper
mkdir datacd 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 instart) 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命令,测试是否启动成功 
//创建节点keycreate /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

将压缩文件移动到自己的softwaremv kafka_2.12-3.1.0.tgz /Users/xiansongliu/Downloads/kafka 解压压缩文件tar -zxvf kafka_2.12-3.1.0.tgz 将安装包移动到/usr/localsudo 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.mzph.cn/news/78096.shtml

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

相关文章

Django05_反向解析

Django05_反向解析 5.1 反向解析概述 随着功能的不断扩展,路由层的 url 发生变化,就需要去更改对应的视图层和模板层的 url,非常麻烦,不便维护。这个时候我们可以通过反向解析,将 url解析成对应的 试图函数 通过 path…

Python语言

这里写自定义目录标题 一、首先认识python一、python起源二、python的优缺点 二、python应用场景三、解释型语言与编译型语言四、安装python-3.5.4-amd64五、变量名的要求六、python简单的语句验证一、打开python交互式运行环境idle,在屏幕上打印python的第一个程序…

移动测试之语音识别功能如何测试?

移动测试之语音识别功能如何测试? 要知道语音识别功能如何测试,我们先了解智能产品语音交互流程: 所以,要进行测试的话,我们需要从以下几个维度来准备测试点: 基础功能测试: 1、声纹的录入&…

SpringMVC之JSON返回异常处理机制

目录 一.JSON 1.1.介绍 1.2.SpringMVC之JSON数据返回 1.2.1.导入依赖 1.2.2.配置spring-mvc.xml 1.2.3.ResponseBody注解使用 1.2.4.常用注解 二.统一异常处理 2.1.为什么要全局异常处理 2.2.异常处理思路 2.2.异常处理方式一 2.3.异常处理方式二 2.4.异常处理方式三…

【C++进阶】:红黑树

红黑树 一.红黑树简单实现1.性质二.更新颜色1.情况一2.情况二3.情况三 3.完整代码(代码有注释,稍微画图很容易理解,旋转部分可以看我的AVL树博客) 二.map和set1.基本实现2.迭代器 本篇的前置条件是AVL树的旋转和搜索树,如果不了解可以看看我的AVL树博客 …

一些docker笔记

一些docker笔记 docker是一个跨平台,可迁移的应用虚拟化,容器化服务平台Docker口号1:Build,Ship and Run (构建,发送和运行) Docker口号2: Build once,Run anywhere (构建一次,到处能用)docker一些概念 docker仓库 官方有dockeHu…

【Realtek sdk-3.4.14b】RTL8197FH-VG和RTL8812F自适应认证失败问题分析及修改

WiFi自适应认证介绍 WiFi 自适应可以理解为针对WiFi的产品,当有外部干扰信号通过,WiFi产品自动停止发出信号一段时间,以达到避让的目的。 问题描述 2.4G和5G WiFi自适应认证失败,信道停止发送信号时间过长,没有在规定时间内停止发包 2.4G截图 问题分析 根据实验室描述可以…

苹果iPhone 15/Pro新机发布,毫米波5G仍然只限美国版

苹果公司今日发布了 iPhone 15 系列新机,共四款,分别是 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 iPhone 15 Pro Max。这些新机型都配备了 USB-C 接口和灵动岛,而 Pro 版还有更多的特色功能,如 A17 Pro 芯片、轻质钛金属框架…

2023年亲测有效----树莓派启动时自动邮件上报ip

2023年亲测 树莓派启动时自动邮件上报ip 首先开启qq邮箱smtp服务shell文件内容启动自动执行python文件注意事项 首先开启qq邮箱smtp服务 然后点击开启就会有授权码 shell文件内容 在自己的shell里,运行echo $PATH,把内容覆盖下面的path。 功能 作用就…

黑马JVM总结(六)

(1)常量池 方法区的组成中都由一个叫做运行时常量池的部分,内部包含一个叫做StringTable的东西 反编译二进制字节码: 类的基本信息: 常量池: 方法定义: 构造方法 main方法 :方法中…

Python爬虫被封ip的解决方案

目录 一、网站反爬虫机制有哪些 二、Python爬虫被封ip的原因 三、爬虫被封IP怎么解决 四、代码示例 在爬虫程序运行过程中,被封禁IP地址是常见的问题之一。这通常是由于目标网站采取了反爬虫机制,例如限制单个IP地址的请求频率或识别请求特征等。当爬…

ARM架构指令集--专用指令

四、状态寄存器专用指令 CPSR寄存器-N Z C V T为0时 为ARM状态 F为0时 为开启FIQ状态 I为0时 为开启IRQ状态 图1 图2 一开始都是SVC指令,因为在操作系统启动的时候,在做一些初始化的操作,不允许被打断 图3 复位后CPSR寄存器为0xD3--…

leecode 每日一题 2596. 检查骑士巡视方案

2596. 检查骑士巡视方案 骑士在一张 n x n 的棋盘上巡视。在 有效 的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。 给你一个 n x n 的整数矩阵 grid ,由范围 [0, n * n - 1] 内的不同整数组成,其…

C++之list

目录 一、关于list 二、list相关函数 三、相关函数的使用 1、构造函数 2、push_back 3、迭代器 4、push_front 5、pop_back 6、insert 7、erase 关于迭代器失效问题 8、splice 9、remove 10、sort 一、关于list list和string、vector一样,都是容器&am…

线性矩阵不等式(LMI)在控制理论中的应用

目录 (一)Matlab中的LMI处理工具包 (二)为什么LMI成为控制理论领域重要工具? (三)LMI在与Lyapunov不等式的关系 (1)线性矩阵不等式 (2)线性矩阵…

Redis 缓存过期淘汰策略

面试题: 生产上你们的redis内存设置多少?如何配置、修改redis的内存大小如果内存满了你怎么办redis清理内存的方式?定期出测除和惰性曲除了解过吗redis缓存淘太策略有哪些?分别是什么?你用那个?redis的LRU…

做机器视觉工程师,其实挺没意思的

3.康耐视VisionPro高级脚本系列教程-3.脚本编辑错误和运行错误调试方法,break和Contitinuee的差别_哔哩哔哩_bilibili 其实人生就是“有时有意思,有时没意思”。 心里有太多的不甘心,太多的苦水,是没法再吃学习的苦&#xff0c…

分库分表---理论

目录 一、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 二、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 三、数据分片规则 1、Hash取模分表 2、数值Range分表 3、一致性Hash算法 四、分库分表带来的问题 1、分布式事务问题 2、跨节点关联查询…

指针,动态内存分配

什么是指针 指针就是地址,地址就是内存单元的编号 指针变量,存放其他变量地址的变量 ,存放地址的变量 第2句话,修改i的值也不影响p的值,可以看下面的例子,p放的是地址,p的地址修改了&#xff…

阿里云通义千问向全社会开放,近期将开源更大参数规模大模型

9月13日,阿里云宣布通义千问大模型已首批通过备案,并正式向公众开放,广大用户可登录通义千问官网体验,企业用户可以通过阿里云调用通义千问API。 通义千问在技术创新和行业应用上均位居大模型行业前列。IDC最新的AI大模型评估报告…