Kafka入门到精通(三)-Kafka
Kafka简介
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
一丶主要特性
- Kafka [1]是一种高吞吐量 [2]的分布式发布订阅消息系统,有如下特性:
- 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
- 高吞吐量 [2]:即使是非常普通的硬件Kafka也可以支持每秒数百万 [2]的消息。
- 支持通过Kafka服务器和消费机集群来分区消息。
- 支持Hadoop并行数据加载
二丶Kafka场景应用
日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
消息系统:解耦和生产者和消费者、缓存消息等。
用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
流式处理:比如spark streaming和storm事件源
三丶Kafka场景应用
- Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组。
- 消息状态:在Kafka中,消息的状态被保存在consumer中,broker不会关心哪个消息被消费了被谁消费了,只记录一个offset值(指向partition中下一个要被消费的消息位置),这就意味着如果consumer处理不好的话,broker上的一个消息可能会被消费多次。
- 消息持久化:Kafka中会把消息持久化到本地文件系统中,并且保持极高的效率。
- 消息有效期:Kafka会长久保留其中的消息,以便consumer可以多次消费,当然其中很多细节是可配置的。
- 批量发送:Kafka支持以消息集合为单位进行批量发送,以提高push效率。
- push-and-pull :Kafka中的Producer和consumer采用的是push-and-pull模式,即Producer只管向broker push消息,consumer只管从broker pull消息,两者对消息的生产和消费是异步的。
- Kafka集群中broker之间的关系:不是主从关系,各个broker在集群中地位一样,我们可以随意的增加或删除任何一个broker节点。
- 负载均衡方面: Kafka提供了一个 metadata API来管理broker之间的负载(对Kafka0.8.x而言,对于0.7.x主要靠zookeeper来实现负载均衡)。
- 同步异步:Producer采用异步push方式,极大提高Kafka系统的吞吐率(可以通过参数控制是采用同步还是异步方式)。
- 分区机制partition:Kafka的broker端支持消息分区,Producer可以决定把消息发到哪个分区,在一个分区中消息的顺序就是Producer发送消息的顺序,一个主题中可以有多个分区,具体分区的数量是可配置的。分区的意义很重大,后面的内容会逐渐体现。
- 离线数据装载:Kafka由于对可拓展的数据持久化的支持,它也非常适合向Hadoop或者数据仓库中进行数据装载。
- 插件支持:现在不少活跃的社区已经开发出不少插件来拓展Kafka的功能,如用来配合Storm、Hadoop、flume相关的插件。
四丶Kafka的安装应用
1.kafka的安装下载
官网下载:Index of /dist/zookeeper
网盘下载:链接:https://pan.baidu.com/s/1zv_s7K7Rav9cZsxgNMmz1w?pwd=DMDM
提取码:DMDM
2.解压即安装,并在当前解压路径下创建logs目录

3.修改配置在*\config目录下
注意反双斜杠
log.dirs=D:\\bigdata\\kafka\\2.12-3.5.1\\logs

4.修改 listeners 参数值,这里我是改为本地

5.启动zookeeper,因为kafka基于zookeeper运行
打开win+r,cmd,输入:zkServer
显示:

6.启动kafka,在kafka的解压目录输入以下命令
.\bin\windows\kafka-server-start.bat .\config\server.properties
显示:

五丶Kafka的相关命令操作
1.创建topics,打开前面两个窗口的前提下
1.D:\softwareIT\kafka_3.5.1\bin\windows 目录下cmd 打开黑窗口2.输入kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
2.创建topics,打开前面两个窗口的前提下
kafka-topics.bat --bootstrap-server localhost:9092 --list
3.同样在windows目录下打开黑窗口(生产者)
kafka-console-producer.bat --broker-list localhost:9092 --topic test

4.同样在windows目录下打开黑窗口(消费者)
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

这里可以看到消费者这里haha打印了。
结尾:安装到这儿介绍就完了,喜欢的朋友点个赞吧,下一章将介绍springboot+kafka的基础应用
相关文章:
Kafka入门到精通(三)-Kafka
Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动…...
高校教师教学质量评估系统-计算机毕业设计源码03344
摘要 在高等教育中,教学质量是培养优秀人才的关键。为了提高教学质量,高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架,旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架,具…...
币界网讯,预计以太坊现货 ETF 将于 7 月中旬推出
刚刚 ETF Store 总裁 Nate Geraci 在 X (前Twitter)平台上宣布,备受数字货币市场期待的SEC以太坊现货 ETF提案,将于7 月中旬通过美国证券交易委员会(SEC)批准。Nate Geraci透露修订后的 S-1 文件将于 7 月 …...
【FFmpeg】avio_open2函数
【FFmpeg】avio_open2函数 1.avio_open21.1 创建URLContext(ffurl_open_whitelist)1.1.1 创建URLContext(ffurl_alloc)1.1.1.1 查找合适的protocol(url_find_protocol)1.1.1.2 为查找到的URLProtocol创建UR…...
技术成神之路:设计模式(二)建造者模式
1.定义 建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象,而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。 2. 结构 建造者模式的主要组成部分包括&#…...
基于Springboot+Vue+mysql仓库管理系统仓库进销存管理系统
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
爬虫scrapy库精简使用大全
一、基本命令 创建项目 scrpay startproject myapp创建爬虫文件 scrapy genspider spider_name "https://www.baidu.com"运行爬虫文件 scrapy crawl spider_name一、使用代理ip 打开中间件middlewares.py,增加以下代码 class ProxyMiddleware:def process…...
Qt - 如何在新线程 (QThread)中使用一个进程 (QProcess)?
在Qt中,QThread 用于处理后台任务,而 QProcess 用于启动和管理外部程序。如果你想在一个新的 QThread 中使用 QProcess,你需要了解 QProcess 并不是专门为在特定线程中运行而设计的。实际上,QProcess 通常在创建它的线程ÿ…...
Qt绘制多线段
最近画辅助线有刚需。 画图准备增加绘制多线段功能。 有哪些方法呢? QPainter Class | Qt GUI 5.15.17 void QPainter::drawPolyline(const QPolygon &points) QPolygon Class | Qt GUI 5.15.17 QPolygon polygon; polygon << QPoint(10, 20) <&…...
去中心化革命:探索区块链技术的前沿
随着信息技术的飞速发展,区块链技术作为一种新兴的去中心化解决方案,正逐渐改变着我们的经济、社会和技术格局。本文将从区块链的基本原理、当前的应用实例以及未来的发展趋势三个方面,深入探讨区块链技术在革命性变革中的角色和影响。 1. 区…...
2024年湖南省各市科小申报时间(科技型中小企业申报流程、条件、好处)新政
湖南省各市科小申报时间流程 一、评价管理 省科技厅牵头负责科技型中小企业评价工作的组织和监督、实地核查、公示公告、入库登记及编号撤销和集中抽查工作,及时处理相关异议、投诉和举报信息。 各市州科技局负责科技型中小企业评价工作的具体实施,组…...
【JD-GUI】MacOS 中使用Java反编译工具JD-GUI
希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常:2.3 关于…...
C++:求梯形面积
梯形面积 已知上底15厘米,下底25厘米,问梯形面积值是多少? #include<iostream> using namespace std; int main() {//梯形的面积公式(上底下底) 高 2//上底变量、下底变量int s,d,h,m;s15;d25;h 2*150 * 2/s ;…...
学会python——在excel中写入数据(python实例十三)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3 .想Excel中写入数据 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…...
Stable Diffusion【基础篇】:降噪强度(denoising strength)
提到降噪强度(denoising strength),大家一定不会陌生,这个参数是图生图中最关键的参数之一。今天在Stable Diffusion Art网站看到一篇介绍降噪强度(denoising strength)的文章(地址:…...
【Python】语法入门
文章目录 Python 基础语法:打印和变量打印和变量的基本语法打印变量 变量操作变量的命名规则打印和变量的应用场景示例:基本计算器 Python 基础语法:列表推导式列表推导式的基本语法基本示例带条件的列表推导式列表推导式的应用场景 Python 基…...
匠心独运:红酒与手工艺的很好结合
在岁月的长河中,红酒与手工艺都以其不同的魅力和技艺,书写着各自的故事。当这两者相遇,仿佛是一场跨越时空的对话,不仅展现了匠心独运的技艺之美,更在无声中诉说着对品质与生活的热爱。今天,就让我们一起探…...
第20章 Mac+VSCode配置C++环境
1. 下载VSCode VSCode下载地址在mac终端里输入xcode- select --install命令,根据提示安装xcode工具。 2. 安装插件(4个) 打开VScode,点击应用右侧菜单栏 C/C(必装) Code Runner(必装…...
FactoryBean 原理简介
FactoryBean 首先是一个工厂类,它可以生产指定的Bean,特殊之处在于它可以向Spring容器中注册两个Bean,一个是它本身,一个是FactoryBean.getObject()方法返回值所代表的Bean。通过实现 FactoryBean 接口,你可以控制某个…...
Redis中hash类型的操作命令(命令的语法、返回值、时间复杂度、注意事项、操作演示)
文章目录 字符串和哈希类型相比hset 命令hget 命令hexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhincrbyfloat 字符串和哈希类型相比 假设有以下一种场景:现在要在 Redis 中存储一个用户的基本信息(id1、namezhangsan、age17),下图表示使用字符串…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
