【Kafka技术内幕】(二):Kafka简介

Kafka Confluent 简介 Apache Kafka 消息分发组件,数据采集后先入Kafka。 Schema Registry Schema管理服务,消息出入kafka、入hdfs时,给数据做序列化/反序列化处理。 Kafka Connect 提供kafka到其他存储的管道服务,此次焦点是从kafka到hdfs,并建立相关HIVE表。 Kafka Rest Proxy 提供kafka的Rest API服务。 Kafk 阅读详情

我是少侠露飞。学习塑造人生,技术改变世界。

什么是 Kafka

Kafka 是一个分布式流式平台,它有三个关键能力:

  • 订阅发布记录流,它类似于企业中的消息队列 或 企业消息传递系统
  • 以容错的方式存储记录流
  • 实时记录流

Kafka 的应用

  1. 作为消息系统
  2. 作为存储系统
  3. 作为流处理器

Kafka 可以建立流数据管道,可靠性的在系统或应用之间获取数据。
建立流式应用传输和响应数据。

Kafka 作为消息系统

Kafka 作为消息系统,它有三个基本组件
在这里插入图片描述

  • Producer : 发布消息的客户端
  • Broker:一个从生产者接受并存储消息的客户端
  • Consumer : 消费者从 Broker 中读取消息

在大型系统中,会需要和很多子系统做交互,也需要消息传递,在诸如此类系统中,你会找到源系统(消息发送方)和 目的系统(消息接收方)。为了在这样的消息系统中传输数据,你需要有合适的数据管道。
在这里插入图片描述
这种数据的交互看起来就很混乱,如果我们使用消息传递系统,那么系统就会变得更加简单和整洁。
在这里插入图片描述

  • Kafka 运行在一个或多个数据中心的服务器上作为集群运行
  • Kafka 集群存储消息记录的目录被称为 topics
  • 每一条消息记录包含三个要素:键(key)、值(value)、时间戳(Timestamp)

核心API

Kafka 有四个核心API,它们分别是

  • Producer API,它允许应用程序向一个或多个 topics 上发送消息记录
  • Consumer API,允许应用程序订阅一个或多个 topics 并处理为其生成的记录流
  • Streams API,它允许应用程序作为流处理器,从一个或多个主题中消费输入流并为其生成输出流,有效的将输入流转换为输出流。
  • Connector API,它允许构建和运行将 Kafka 主题连接到现有应用程序或数据系统的可用生产者和消费者。例如,关系数据库的连接器可能会捕获对表的所有更改

在这里插入图片描述

Kafka的基本概念

Messages And Batches

Kafka 的基本数据单元被称为 message(消息),为减少网络开销,提高效率,多个消息会被放入同一批次 (Batch) 中后再写入。

Topics And Partitions

Kafka 的消息通过 Topics(主题) 进行分类,一个主题可以被分为若干个 Partitions(分区),一个分区就是一个提交日志 (commit log)。消息以追加的方式写入分区,然后以先入先出的顺序读取。Kafka 通过分区来实现数据的冗余和伸缩性,分区可以分布在不同的服务器上,这意味着一个 Topic 可以横跨多个服务器,以提供比单个服务器更强大的性能。
由于一个 Topic 包含多个分区,因此无法在整个 Topic 范围内保证消息的顺序性,但可以保证消息在单个分区内的顺序性。
在这里插入图片描述

Producers And Consumers

Producers

生产者负责创建消息。一般情况下,生产者在把消息均衡地分布到在主题的所有分区上,而并不关心消息会被写到哪个分区。如果我们想要把消息写到指定的分区,可以通过自定义分区器来实现。

Consumers

消费者是消费者群组的一部分,消费者负责消费消息。消费者可以订阅一个或者多个主题,并按照消息生成的顺序来读取它们。消费者通过检查消息的偏移量 (offset) 来区分读取过的消息。偏移量是一个不断递增的数值,在创建消息时,Kafka 会把它添加到其中,在给定的分区里,每个消息的偏移量都是唯一的。消费者把每个分区最后读取的偏移量保存在 Zookeeper 或 Kafka 上,如果消费者关闭或者重启,它还可以重新获取该偏移量,以保证读取状态不会丢失。
在这里插入图片描述

一个分区只能被同一个消费者群组里面的一个消费者读取,但可以被不同消费者群组中所组成的多个消费者共同读取。多个消费者群组中消费者共同读取同一个主题时,彼此之间互不影响。

Brokers And Clusters

一个独立的 Kafka 服务器被称为 Broker。Broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。Broker 为消费者提供服务,对读取分区的请求做出响应,返回已经提交到磁盘的消息。
Broker 是集群 (Cluster) 的组成部分。每一个集群都会选举出一个 Broker 作为集群控制器 (Controller),集群控制器负责管理工作,包括将分区分配给 Broker 和监控 Broker。
在集群中,一个分区 (Partition) 从属一个 Broker,该 Broker 被称为分区的首领 (Leader)。一个分区可以分配给多个 Brokers,这个时候会发生分区复制。这种复制机制为分区提供了消息冗余,如果有一个 Broker 失效,其他 Broker 可以接管领导权。
在这里插入图片描述

小结

最后用一张图来对Kafka的工作流程作出小结:
在这里插入图片描述

点点关注,不会迷路

kafka全套资源环境+demo 资源中有kafka的全套环境和所需jar包和demo,需要的人可直接下载安装,导入项目即可实现kafka消息队列 立即下载

相关推荐

Kafka技术内幕:图文详解Kafka源码设计与实现+书签.pdf+源码

Kafka技术内幕:图文详解Kafka源码设计与实现 有书签 有源码

(一)Kafka源码的总览

Kafka 1)Kafka是大数据里面难度较大,而且使用广泛的一个技术,倒不是说使用起来难度大,而是说使用过程中容易出问题,但是生产又对其稳定性要求高。通过剖析其里面的源码可以帮助大家深刻理解Kafka的原理,便于大家去解决生产中的问题。 2)Kafka的源码的质量是我看过的大数据的开源产品里面质量最好的。其代码质量远超于hadoop,Spark等产品。整体代码阅读起来难度也不大,而且清晰。最关键的是在里面可以学到较多的架构的知识,这些知识在一般的架构课里面是学不到的。还可以偷偷的告诉大家,里面的有些代码漂

weixin_37850264的博客 1483

kafka技术内幕pdf网盘txt

kafka技术内幕pdf资料的百度网盘地址密码,永久有效;kafka技术内幕pdf资料的百度网盘地址密码,永久有效

kafka源码_10小时,这回一次搞定 Kafka 源码!

Kafka因其优越的特性广泛用于日志收集、用户活动跟踪等方面,也得到越来越多企业的青睐,很多 IT 界前辈更是在技术层面不断深挖。目前,如果你还局限在 Kafka 的基本应用,将很难 cover 住各种 trouble shooting,就连面试都会被整懵逼:为什么要用 Apache Kafka 集群?kafka 如何不消费重复数据?Kafka Producer 如何优化打入速度?解释...

weixin_39638526的博客 230

kafka技术内幕

kafka技术内幕,2017.11月最新出版,基于0.10版本,非常不错的一本书,由于是高清,本人帐号最大上传文件为220MB,所以分两次上传!

Kafka技术内幕扫描版电子书

Kafka技术内幕扫描版电子书 Kafka技术内幕扫描版电子书

kafka技术内幕(一)

文章目录概念基本概念topic,partition副本生产者重要组件发送消息流程元数据的更新消费者消费者与消费组客户端订阅主题与分区消息消费位移提交控制或关闭消费指定位移消费再均衡消费者拦截器多线程实现主题和分区主题的管理KafkaAdminClient分区的管理选择合适的分区数日志存储文件目录布局日志格式日志索引偏移量索引时间戳索引日志清理日志删除基于时间基于日志大小基于日志起始偏移量日志压缩磁盘存储页缓存零拷贝附录服务端参数配置**`server.properties`**配置必配置属性参数说明Lea.

demon7552003的小本本 648

Kafka技术内幕-郑奇煌(完整版).rar

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,[3]这使它作为企业级基础设施来处理流式数据非常有价值。此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java流式处理库 (计算机)。

Kafka 技术内幕笔记

功能的使用上是基于消费订阅模式设计的,在配置变更的维护上采用监听者模式实现的,其中ZK作为监听者模式的 context 存在的。

qq_42270334的博客 872

Kafka技术内幕及源码设计与实现(第一部分)

Kafka技术内幕及源码设计与实现,这是一本很全的书,很值得学习

相机SDK开发C++篇-常用开发函数封装讲解(迈德威视相机)

/ 软触发失败,返回false } return true;= (nRet = CameraSetSysOption("NumBuffers", QString("%1").arg(getImageBufferNodeNum()).toLocal8Bit().data()))) { setLastErrorMsg("相机#%1设置缓存区数量错误,错误码:%2").arg(getCameraIndex()).arg(nRet);

GodJhin的博客 1542

kafka技术内幕【简化版】

kafka技术内幕服务端服务的模型零拷贝技术生产者消费者新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 服务端...

Shinlyzsljay的博客 1200

PET,CT图像融合笔记

PET-CT怎样进行图像融合?图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)

chenran187906的博客 8411

kafka简介

Kafka 本质上是⼀个消息队列。与zeromq不同的是,Kafka是一个独立的框架而不是一个库。这里主要介绍其原理,至于具体的安装等操作不做介绍,只是提示一下,第一次运行时,先设置前台运行,看会不会报错。 架构 注意下图没有画上zookeeper,请自行脑补。kafka需要连接到zookeeper,来完成注册发现等集群操作。broker都是由zookeeper管理。 先给出 Kafka ⼀些重要概念,让⼤家对 Kafka 有个整体的认识和感知,后⾯还会详细的解析每⼀个概念的作⽤以及更深⼊的原理: Pr

m0_65931372的博客 6万+

C++结合大漠插件实现DNF自动化脚本:从原理到实战

自动化技术通过模拟用户操作,实现重复性任务的自动执行,其核心原理在于对系统输入输出接口的精确控制。在Windows平台,这通常涉及窗口管理、图像识别与键鼠模拟等技术。这些技术为软件自动化测试、办公流程自动化及特定场景的辅助工具开发提供了工程实践基础。大漠插件作为国内广泛使用的Windows自动化开发组件,封装了上述底层操作,显著降低了开发门槛。通过其提供的COM接口,开发者可以高效实现窗口绑定、后台找图找色及内存读写等关键功能。本文以《地下城与勇士》为例,详细解析如何利用C++集成大漠插件,构建一个稳定、高

weixin_34185512的博客 576

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1294

kafka技术内幕 pdf 下载_架构师技术总结:Kafka技术内幕

Apache Kafka是一个分布式流媒体平台。这到底是什么意思? 流媒体平台具有三个关键功能: 发布和订阅记录流,类似于消息队列或企业消息系统。 以容错的持久方式存储记录流。 记录发生时的处理流。Kafka通常用于两类广泛的应用:1.建立实时流数据管道,在系统或应用之间可靠地获取数据2.建立对数据流进行转换或反应的实时流应用程序为了理解Kafka是如何做到这些的,让我们从下到上探究Kafka的能...

weixin_39617405的博客 536

RV1126B SDK移植实战:从DDR配置到USB烧写全解析

本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。

weixin_29164497的博客 542

《kafka技术内幕》读书笔记

生产者部分 ISR? leader维护的动态健康follower集合(我简称他们为太子) leader发生故障之后从ISR中选举新的leader HW、LEO? HW高水位:consumer可见的数据 LEO每个副本最后的offset值:leader发生故障之后,会将offset同步到HW,高于部分数据截掉(只能够保证数据的一致性,并不保证数据的丢失和重复问题) Exactly Once? At Least Once语义,ack=-1(enable.idompotence=true,<

阿拉斯加大闸蟹的博客 2189

Python爬虫:抓取餐饮平台顾客评分与评价的完整教程

本文介绍了如何使用Python爬虫技术抓取餐饮平台上的餐厅评分和评论数据。我们通过三种主要的抓取方法:静态网页抓取(requests)、动态网页抓取(Selenium)和API抓取,展示了如何抓取餐饮平台的数据。还介绍了如何使用pandas对抓取的数据进行存储、清洗、分析,并进行可视化和情感分析。通过本文的学习,您应该能够掌握如何使用Python爬虫抓取餐饮平台的评论数据,并将这些数据应用于市场分析、顾客反馈和服务优化等领域。

2201_76125261的博客 1144

基于STM32设计的个人健康检测仪(华为云IOT)(191)

本系统采用华为云物联网平台实现数据云端存储与分析,并通过自研手机APP提供远程监控界面,让用户无论身处何地都能及时掌握自身的健康数据,为用户提供个性化的健康管理方案,同时也为医疗机构提供了便捷的数据获取途径,助力实现智能化、精细化的医疗服务。

1678

Kafka抛弃Zookeeper的内幕:从依赖到自立的技术革命

ZooKeeper在Hadoop/HBase生态仍不可替代,但Kafka的“独立宣言”是否预示中间件去中心化浪潮?欢迎评论区探讨!👇。

全栈开发工程师 2136

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6666

【福利】文末评论免费送《Kafka技术内幕》新书

关注 iteblog_hadoop 公众号并在本文末评论区留言(认真写评论,增加上榜的机会)。留言点赞数排名前5名的粉丝,各免费赠送一本《Kafka技术内幕》,活动截止至11月28日18:00。 Kafka,不只是个消息系统,更是功能完善的分布式流式处理平台。 2017年11月1日,Kafka 1.0.0 版本发布,带动了不少程序员期待深入了解这个人气持续飙升的项目。恰好,图灵新书

Hadoop技术博文 1520

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

kafka技术内幕(二)

Kafka服务器 协议 略 时间轮 Kafka中存在大量的延时操作, 比如延时生产、延时拉取和延时删除等。Kafka并没有使用JDK自带的Timer 或DelayQueue来实现延时的功能,而是基于时间轮的概念自定义实现了一个用于延时功能的定时器(SystemTimer)。JDK中Timer和DelayQueue的插入和删除操作的平均时间复杂度为O(nlogn)并不能满足Kafka的高性能要求, 而基于时间轮可以将插入和删除操作的时间复杂度都降为0(1) 。时间轮的应用并非Kafka独有, 其应用场景还有很

demon7552003的小本本 490

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《Kafka技术内幕》读书笔记:Kafka入门

1. 介绍 1.1 Kafka流式处理平台 一个流式数据平台,最重要的是要具备如下3个特点: 类似消息系统,提供事件流的发布和订阅,既具备事件注入功能。 存储事件流的数据节点具有故障容错的特点,即具备数据存储功能。 能够对实时的事件流进行流式地处理和分析,即具备流处理功能。 作为一个流式数据平台,Kafka如何实现上面3个功能特点: 1.1.1 消息系统 消息系统(也叫消息队列)主要有两种消息模型:队列和发布订阅。 队列模式:多个消费者读取队列,每条消息只发送给一个消费者 发布-订阅模式:多个消费者订

weixin_42881755的博客 591

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 【Kafka技术内幕】(一):认识MQ——典型应用场景和基本特性概述
下一篇: 【Kafka技术内幕】(三):Kafka生产者:高可用Producer和ISR机制
少侠露飞
博客等级 码龄9年 214粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值