zookeeper+kafka的消息队列

  • zookeeper+Kafka

    • 两个都是消息队列的工具

      • 消息队列

        • 出现原因:生产者产生的消息与消费者处理消息的效率相差很大。为了避免出现数据丢失而设立的中间件。

        • 在消息的生产者与消费之间设置一个系统,负责缓存生产者与消费者之间的消息的缓存。将消息排序。

        • 优点:

          • 解耦

            • 将生产者与消费者的关系解开,这样避免一端的程序出问题导致整个两端程序都不可用。

          • 冗余

            • 为生产者与消费者之间产生的数据做了冗余

          • 扩展性

            • 利用zookeeper可以具备良好的扩展性。

          • 灵活性

            • 消息队列的对象可以是各种不同的程序

          • 峰值处理能力

            • 生产者产生的消息如果具有波动性,某一时刻峰值很高,利用消息队列就可以承载压力,然后慢慢分配给消息的消费者。

          • 可恢复性

            • 可以采用群集备份

          • 顺序保证

            • 消息以排序的方式存在

          • 缓存

            • 在生产者与消费者之间起到了一个缓冲的作用

          • 异步通信

            • 生产者产生的消息与消费者消费消息可以不再同一时间。

      • 消息队列产品

        • kafka

          • apache旗下的产品

          • 一种高吞吐量分布式发布/订阅消息队列的开源系统

          • kafka术语

            • broker

              • 每一个安装了kafka的服务器都可以称为一个broker

            • topic

              • 一类消息的集合被称为主题,一个broker可以有多个topic。

            • producer

              • 消息生产者

            • consumer

              • 消息消费者

            • partition

              • 存放消息的区域,每一个topic可以有多个partition,但是处理还是一个一个区域处理。每一个区域内的消息都会被分配一个id。offset (偏移量)

            • consumer GROUP

              • 消费者组

            • messages

              • 消息,通信的基本单位。

          • kafka架构

            • 需要注意的是,kafka作为一个支持多生产者多消费者的架构,再写入消息时允许多个生产者写道同一个partition,但是消费者读取的时候一个partition仅允许一个消费者消费,但一个消费者可以消费多个partition。

            • kafka支持消息持久化存储,消息会被存储在缓冲区内,达成一定条件就会被写入磁盘。在写入磁盘是是按照顺序的。

            • topic与partition的关系

              • partition的数量决定了组成topic的log的数量, 因此推荐partition的数量要大于同时允许的consumer数量,要小于等于集群broker的数量。

          • zookeeper

            • 一种分布式协调技术,用于解决分布式环境中多个进程之间的同步控制,让他们有序的访问某种共享资源,尽量减少脑裂的发生。

              • 开源的分布式协调服务

            • 解决问题

              • 单点故障

            • 工作原理

              • master启动

                • 节点向zookeeper注册信息,在选举产生master时采用最小编号算法,既最先的编号最小。

              • master故障

                • 出现故障的节点信息会被自动删除,再通过选举投票产生新的master。

                  • zookeeper判断节点故障的依据: 节点必须与zookeeper保持心跳连接。 节点能够及时响应zookeeper的请求。

              • master恢复

                • master恢复后,会再次向zookeeper注册自身节点信息,编号就会变淡。

            • 架构图

              • 四个角色

                • leader:领导者

                  • 负责发起投票与决议,更新系统状态

                    • 3888,选举通信端口

                • follower:追随者

                  • 负责请求客户端的请求并将结果给客户端,在选举过程中参与投票。

                • observer:观察者角色

                  • 负责接收客户端请求,并将请求转发给leader。但不参与投票,目的是扩展系统,提高伸缩性。

                    • watcher:观察者,监视者

                    • sentinel:哨兵

                • client:客户端

                  • 负责向zookeeper发起请求。

            • zookeeper在kafka中的作用

              • broker注册

                • 每一个kafka的master节点都会在zookeeper中注册信息,提供id,每个master整个id都必须唯一。

              • topic注册

                • 每一个主题也会在zookeeper注册信息。

              • 生产者与消费者的负载均衡(实际上是高可用)

              • 分区与消费者的联系

              • 消费进度offset记录

              • 消费者注册

                • 根据注册信息将消费者分配到不同的分区,以达到负载均衡的目的。

        • zookeeper+kafka部署

          • 本案例以zookeeper3.6版本与kafka2.13版本为例

          • 单节点部署kafka进行测试

            • 可以设置hosts文件进行域名通信

            • 安装依赖环境

              • yum -y install java 注意是1.8版本。

            • 解压即可用移动到/etc/zookeeper

            • 修改配置文件

              • 可以单独指定数据目录

                • dataDir=/etc/zookeeper/zookeeper-data

                • 然后将指定的目录创建出来

                  • 启动查看状态

                    • ./bin/zkServer.sh start

          • 单节点部署zookeeper+kafka做测试

            • 部署zookeeper

              • 可以设置hosts文件进行域名通信

              • 安装依赖环境

                • yum -y install java 注意是1.8版本。

              • 解压即可用移动到/etc/zookeeper

              • 修改配置文件

                • 可以单独指定数据目录

                  • dataDir=/etc/zookeeper/zookeeper-data

                  • 然后将指定的目录创建出来

                    • 之后启动查看状态

            • 部署kafka

              • 同样的解压即可用移动到/etc/kafka

              • 同样的可以修改配置文件指定日志文件目录并将目录创建出来

                • log.dirs=/etc/kafka/kafka-logs

                • mkdir /etc/kafka/kafka-logs

              • 启动kafka需要指定配置文件并可以设置为后台启动。

                • bin/kafka-server-start.sh config/server.properties &

            • 需要注意启动时要先启动zookeeper,结束时要先结束kafka。

            • 测试

              • 创建topic

                • kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 1 --partitions 1 --topic test

                • kafka-topic.sh --create --zookeeper broker域名或IP:端口一般2181 --replication-factor 集群master数量 --partitions 1 topic中分区数量 --topic 分区名

              • 列出topic

                • kafka-topics.sh --list --zookeeper brokerIP/域名:端口(2181)

              • 查看topic

                • kafka-topics.sh --describe --zookeeper kafka1:2181 --topic test

                  • describ :描述

              • 生产消息进入命令行模式

                • /kafka-console-producer.sh --broker-list kafka1:9092 -topic tes

                  • 9092kafka监听客户端连接的端口

              • 消费消息,进入查看产生消费消息的界面

                • kafka-console-consumer.sh --bootstrap-server kafka1:9092 --topic test

              • 删除topic

                • kafka-topic.sh --delete --zookeeper Kafka服务器:端口 --topic 主题名

          • 集群部署zookeeper+kafka

            • 修改主机hosts文件,使之可以使用域名访问

            • 安装zookeeper三台主机安装部署略有不同

              • 准备前奏

                • 防火墙与内核机制处理

                • 安装依赖环境java

              • 解压移动

                • tar zxvf apache-zookeeper-3.6.0-bin.tar.gz

                • mv apache-zookeeper-3.6.0-bin /etc/zookeeper

              • 创建数据保存目录

                • mkdir zookeeper-data

              • 修改配置文件

                • dataDir=/etc/zookeeper/zookeeper-data

                  • 指定数据保存目录

                • clientPort=2181

                  • 确定监听端口

                • 添加节点注册信息有几个添加几个

                  • server.1=192.168.10.101:2888:3888

                    • 2888:集群内部通信端口,主要用于选举leader

                    • 3888:其他服务器在选举leader时监听的端口。

              • 创建id文件

                • echo '1' > /etc/zookeeper/zookeeper-data/myid

                  • 每个节点IP不同

              • 最后启动并查看状态

            • 安装kafka,节点配置相同

              • 解压并移动

                • tar zxvf kafka_2.13-2.4.1.tgz

                • mv kafka_2.13-2.4.1 /etc/kafka

              • 修改配置文件

                • listeners=PLAINTEXT://192.168.10.101:9092

                  • 监听客户端连接

                • log.dirs=/etc/kafka/kafka-logs

                  • 指定日志文件位置

                • num.partitions=1

                  • 分区数量,不能超过节点数。

                • 集群地址信息

                  • zookeeper.connect=192.168.10.101:2181,192.168.10.102:2181,192.168.10.103:2181

              • 创建日志目录

                • mkdir /etc/kafka/kafka-logs

              • 最后启动查看状态

              • 测试

                • 在任意一节点上创建topic

                • 列出任意一节点的topic

                • 进行生产与消费的对应

              • ELK日志系统添加接口对接Kafka

                • input { beats { port => "5044" codec => "json" } } output { kafka { bootstrap_servers => "192.168.10.101:9092,192.168.10.102:9092,192.168.10.103:9092" topic_id => "httpd-filebeat" batch_size => "5" codec => "json" } }

            • 该集群中用到的端口

              • zookeeper客户端连接的端口:2181

              • zookeerper内部通信端口:2888

              • zookeeper监听选举过程的端口:3888

              • kafka监听客户端的接口:9092

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC注解全解析:构建高效Web应用的终极指南 (上)

SpringMVC 是一个强大的 Web 框架,广泛应用于 Java Web 开发中。它通过注解简化了配置,增强了代码的可读性。本文将全面解析 SpringMVC 中常用的注解及其用法,帮助你构建高效的 Web 应用。 一. MVC介绍 MVC 是 Model View Controller 的缩写…

鸿蒙语言基础类库:【@system.bluetooth (蓝牙)】

蓝牙 说明: 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7 开始,该接口不再维护,推荐使用新接口[ohos.bluetooth]。本模块首批接口从API version…

反序列化漏洞详细介绍

反序列化漏洞详细介绍: 反序列化漏洞是软件开发中一个严重的安全问题,尤其在使用网络通信和持久化数据的应用中更为常见。下面是对反序列化漏洞的详细介绍: 原理 序列化是将对象的状态信息转换为可以存储或传输的格式(如字节流&#xff09…

【TAROT】韦特体系塔罗牌学习(2)——魔术师 THE MAGICIAN I

韦特体系塔罗牌学习(2)——魔术师 THE MAGICIAN I 目录 韦特体系塔罗牌学习(2)——魔术师 THE MAGICIAN I牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际关系5. 其他象征意 逆位牌意1. 关键词…

python数据可视化(5)——绘制饼图

课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 Python绘制饼图分析北京天气 饼图,是一个划分为几个扇形的圆形统计图表&#xff…

【网络世界】网络基础概念

目录 🌈 前言🌈 📁 什么是网络 📁 协议 📂 概念 📂 OSI参考模型 📂 TCP/IP模型 📂 TCP/IP 和 系统分层的关系 📁 网络传输的基本流程 📂 MAC地址 &#…

文件上传接口

文章目录 开发前端接口 开发前端接口 首先这个前端的文件上传组件使用了,前端组件 首先这个接口不是一般的接口,这个接口可以提取出来,之后那里使用了,就直接放到哪里 所以这是一个万能文件上传接口 写完之后选择 头像组件 在图库中添加组件 写前端组件之后,写了前端的组件…

WPF实现一个带旋转动画的菜单栏

WPF实现一个带旋转动画的菜单栏 一、创建WPF项目及文件1、创建项目2、创建文件夹及文件3、添加引用 二、代码实现2.ControlAttachProperty类 一、创建WPF项目及文件 1、创建项目 打开VS2022,创建一个WPF项目,如下所示 2、创建文件夹及文件 创建资源文件夹&…

Go: IM系统技术架构梳理

概述 整个IM系统的一般架构如下 我们这张图展示了整个IM系统的一般架构可见分为四层那最上面这一层是前端,包括哪些东西呢? 它包括两部分,第一部分是跟用户直接交互的比如说各种IOS APP, 各种安卓 APP还有各种 web APP 在浏览器里面打开的以…

区块链学习05-web3中solidity和move语言

Solidity 和 Move 语言的比较:Web3 开发中的两种选择 Solidity 和 Move 都是用于开发区块链平台智能合约的编程语言。它们具有一些相似之处,但也存在一些关键差异。 相似之处: Solidity 和 Move 都是图灵完备语言,这意味着它们可以表达计算…

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

现实世界的视频捕获虽然因其真实性而宝贵,但常常受限于长尾分布的问题,即常见场景过度呈现,而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题",在模拟复杂环境光线、几何形状或达到高度逼真效果方面存在局限。传…

CentOS配置时钟服务

一、ntp协议 1.1 基础 NTP(Network Time Protocol,网络时间协议)是用于同步计算机网络中各个设备时间的协议。 下面了解一下 ntp 的配置选项 1.) iburst 功能: 通过发送一组八个数据包来加速初始同步。 用法: server 0.pool.ntp.org i…

Python实现简单的ui界面设计(小白入门)

引言: 当我们书写一个python程序时,我们在控制台输入信息时,往往多有不便,并且为了更加美观且直观的方式输入控制命令,我们常常设计一个ui界面,这样就能方便执行相关功能。如计算器、日历等界面。 正文&a…

Docker安装RabbitMQ(带web管理端)

1.拉取带web管理的镜像 可以拉取rabbitmq对应版本的web管理端,比如:rabbitmq:3.9.11-management,也可以直接拉取带web管理端的最新版本 rabbitmq:management. docker pull rabbitmq:3.9.11-management 注意:如果docker pull ra…

Linux目录网络设置远程工具的使用

文章目录 Linux目录虚拟机⽹络配置查看⽹络信息修改⽹络配置信息 虚拟机管理操作远程⼯具的使⽤ Linux目录 Linux的⽬录结构 Linux中的常⻅⽬录 Linux常⻅的⽬录结构,不同版本的Linux⽬录结构可能略有不同 Centos7的⽂件⽬录结构 Linux根⽬录下的常⻅⽬录及作⽤ …

C语言之qsort函数

一、qsort 1.库函数qsort qsort是库函数&#xff0c;直接可以用来排序数据&#xff0c;底层使用的是快速排序。 qsort函数可以排序任意类型的数据。 2.头文件 #include<stdlib.h> 3.参数讲解 void*类型的指针是无具体类型的指针&#xff0c;这种类型的指针的不能直接解…

COLING 2024 | AlphaFin:基于LLM的股票预测大模型,显著提高预测能力

COLING 2024 | AlphaFin&#xff1a;基于LLM的股票预测大模型&#xff0c;显著提高预测能力 发布于 2024-06-13 18:31:49 目前&#xff0c;机器学习和深度学习算法&#xff08;ML&DL&#xff09;已被广泛应用于股票趋势预测&#xff0c;并取得了显著进展。然而&#xff0c…

小霸王游戏卡是用什么编程的?

小霸王游戏卡曾经很流行。以超级马里奥为例&#xff0c;超级马里奥免费在线网址&#xff1a;https://supermarioplay.com/cn 游戏画面如下图&#xff1a; 这款游戏的编程语言是什么了&#xff1f; 汇编6502

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【25】【分布式事务】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【25】【分布式事务】 本地事务事务的基本性质事务的隔离级别&#xff08;下面四个越往下&#xff0c;隔离级 别越高&#xff0c;并发能力越差&#xff09;事务的传播行为&#xff08;是否…

Linux系统调优与日志管理全面指南

文章目录 一、文件存储基础1.1 文件与硬盘存储单位1.2 文件数据与元信息1.3 inode机制查看文件名对应的inode号码有两种方式: 1.4 inode与硬盘空间1.5 特有现象 二、inode节点耗尽故障处理2.1 模拟inode节点耗尽故障 三、恢复误删除的文件3.1 恢复误删除的ext3文件EXT类型文件恢…