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的基础应用

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

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

相关文章

《昇思25天学习打卡营第7天 | 昇思MindSpore模型训练》

第七天 之前学习了模型训练的构建数据集,定义神经网络模型。本节学习了定义超参、损失函数及优化器,输入数据集进行训练与评估。 模型训练的步骤 1.构建数据集 2.定义神经网络模型 3.定义超参、损失函数及优化器 4.输入数据集进行训练与评估

通义灵码上线 Visual Studio 插件市场啦!

通义灵码,是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,提供代码智能生成、研发智能问答能力。 通义灵…

【华为战报】5月、6月HCIP考试战报!

华为认证:HCIA-HCIP-HCIE 点击查看: 【华为战报】4月 HCIP考试战报! 【华为战报】2月、3月HCIP考试战报! 【华为战报】11月份HCIP考试战报! 【HCIE喜报】HCIE备考2个月丝滑通关,考试心得分享&#xff…

聊一聊 C# 弱引用 底层是怎么玩的

一:背景 1. 讲故事 最近在分析dump时,发现有程序的卡死和WeakReference有关,在以前只知道怎么用,但不清楚底层逻辑走向是什么样的,借着这个dump的契机来简单研究下。 二:弱引用的玩法 1. 一些基础概念 …

IDEA 2024.1.4 的 AI Assistant 终于被激活了,我是这样干的!

ai assistant激活成功后,如图 ai assistant渠道:https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上,Google 为 Android Studio 推出了 Studio Bot 功能,使用了谷歌编码基础模型 Codey,Codey 是…

加载数据到mysql并解决原始数据乱码问题

查看linux上数据: 使用命令转换编码: iconv -f GBK -t UTF-8 toutiao.csv -o toutiao2.csv加载数据到mysql: load data local infile /root/toutiao2.csv INTO TABLE pdz FIELDS TERMINATED BY , LINES TERMINATED BY \r\n;

「ETL趋势」FDL数据开发支持版本管理、实时管道支持多对一、数据源新增支持神通

FineDataLink作为一款市场上的顶尖ETL工具,集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具,进行了新的维护迭代。本文把FDL4.1.8最新功能作了介绍,方便大家对比:(产品更新详情:…

口碑最好的麦克风品牌有哪些?轻揭无线领夹麦克风哪个牌子好!

​无线领夹麦克风,无疑是现代音频技术的杰出代表。它摆脱了传统有线麦克风的束缚,让声音的传播更加自由、灵活。无论是追求极致音质的音乐爱好者,还是需要高效沟通的商务人士,无线领夹麦克风都能满足你的需求,让你的声…

计算机基础——经典排序算法总结2

直接插入排序的过程:先将序列第一个记录暂时作为有序子序列,从第二个开始逐个进行插入,直至整个序列有序。一趟排序将elem[i]插入到已排好序elem[0…i-1]中各元素做比较后的任何对应位置,所以未必能选出一个元素放在其最终位置上。…

高考完的假期想学c语言 要注意那些问题?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 大学教得少、内容落后时…

Python应用开发——30天学习Streamlit Python包进行APP的构建(11)

st.bokeh_chart 显示互动式虚化图。 Bokeh 是 Python 的一个图表库。此函数的参数与 Bokeh 的 show 函数的参数非常接近。有关 Bokeh 的更多信息,请访问 https://bokeh.pydata.org。 要在 Streamlit 中显示 Bokeh 图表,请在调用 Bokeh 的 show 时调用 st.bokeh_chart。 Fu…

SDIO学习(2)--SD卡 2.0协议

本文参考文档: 《SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00》 1 SD卡简介 1.1 SD卡概念 1.2 SD卡外形和接口 Clk:时钟线,由SDIO主机产生 CMD:命令控制线,SDIO主机通过改…

flutter开发实战-ListWheelScrollView与自定义TimePicker时间选择器

flutter开发实战-ListWheelScrollView与自定义TimePicker 最近在使用时间选择器的时候,需要自定义一个TimePicker效果,当然这里就使用了ListWheelScrollView。ListWheelScrollView与ListView类似,但ListWheelScrollView渲染效果类似滚筒效果…

Oracle新特性速递:未来数据库技术的无限可能

文章目录 一、自治数据库:智能化与自动化的革命二、机器学习集成:智能数据分析的新境界三、区块链技术:确保数据完整性与透明性四、云原生数据库:灵活扩展与快速部署五、人工智能优化器:智能查询执行计划《Oracle从入门…

上海约瑟电器 JOBS(KG9001)拉绳开关 严格质量细节监控

基本信息 品牌:JOSEF约瑟 型号:JOBS(KG9001) 技术参数 动作角度:30 电源电压:220V 工作电压:380V 额定电流:5A 防护等级:IP65 复位方式:支持自动(I)和手动&am…

高考填报志愿三连问,从人格优势分析兴趣和专业

“我的兴趣爱好什么?” “我的理想是什么?” “我想成为什么?” ------高考填报志愿三连问! 最近我在知乎上看过一个比较有意义的提问,提问的也是高考填报志愿的同学,自从高考后,每日三连问&…

Python基于逻辑回归分类模型、决策树分类模型、LightGBM分类模型和XGBoost分类模型实现车辆贷款违约预测项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着经济的发展和人民生活水平的提高,汽车消费在居民消费中所占比例逐渐增加,汽…

华为实训案例

案例下载 拓扑图 任务清单 (一)基础配置 根据附录1拓扑图、附录2地址规划表、附录3设备编号表,配置设备接口及主机名信息。 将所有终端超时时间设置为永不超时。 在全网Trunk链路上做VLAN修剪,仅允许必要的流量通过&#xff0…

什么是GPIO口,GPIO口最简单的input/output

目录 一,什么是GPIO口 二,GPIO内部结构 三,GPIO口工作模式 一,什么是GPIO口 1.GPIO口是通用输入输出端口(General-purpose input/output)的英文缩写,是所有的微控制器必不可少的外设之一&…

基于C++标准库实现定时器类

基于C标准库实现定时器类 定时器类是多线程编程中经常设计到的工具类 简单的定时器原理其实很简单(是不是有点GNU is not unix的味道;): 创建一个新线程在那个线程里等待等待指定时长后做任务 python标准库中就有这么一个定时器类&#xf…