大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka (正在更新…)

章节内容

上节我们完成了如下的内容:

  • Redis高可用 CAP-AP
  • Redis主从模式
  • Redis一主一从 一主多从
  • Redis哨兵模式
  • Redis哨兵模式 docker-compose测试

终于!我们更新完了Redis!现在我们开始更新Kafka。

Kafka介绍

Kafka最初是由Linkedin公司开发,是一个分布式、分区的、多副本、多生产者、多消费者、基于ZK的。
常见用于 Nginx 日志、消息服务。在2010年贡献给了Apache基金会成为顶级开源项目。

Kafka主要设计目标如下:

  • 以时间复杂度为O(1)的方式提供消息持久化的能力,即使TB级数据也能保证常数访问。
  • 高吞吐率,即使在非常廉价的机器上也可以有每秒100K条消息的传输
  • 支持KafkaServer间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。
  • 同时支持离线数据处理和实时数据处理
  • 支持在线水平扩展

在这里插入图片描述

生产消费图

在这里插入图片描述

消息模式

主流的消息传递有两种方式:点对点和发布订阅,Kafka属于 发布-订阅 模式的一种
对于消息中间件,消息会分为:拉、推。Kafka消息只有拉取,没有推送。(可以用轮询实现推送)

  • Kafka在一个或多个可以跨域多个数据中心的服务器上作为集群运行
  • Kafka集群按照主题分类管理,一个主题可以多个分区,一个分区可以有多个副本分区
  • 每个记录由一个键,一个值和一个时间戳组成。

核心API

  • ProducerAPI:允许应用程序记录流发布到一个或者多个Kafka主题
  • ConsumerAPI:允许应用程序订阅一个或多个主题并处理并生成记录流
  • StreamAPI:允许应用程序充当流处理器,使用一个或多个主题的输入流,并生成一个或者多个输出流。从而有效的将输入流转换为输出流。
  • ConnectorAPI:允许构建和运行将Kafka主题连接到现有应用程序或数据系统的可重用生产者或使用者

Kafka优势

  • 高吞吐:单机每秒处理几十百万的消息量,即使存储了TB消息,也能够稳定运行
  • 高性能:单节点支持上千个客户端,并保证零停机和零数据丢失。
  • 持久化数据存储:将消息持久化,通过数据持久化到磁盘以及replication防止数据丢失。
  • 分布式系统,易于向外扩展。所有Producer和Consumer等都可以有多个,分布式的,无需停机扩展。
  • Kafka是分布式、分区、复制、容错的
  • 客户端状态维护:消息被处理的状态在Consumer端维护,而不是由Server维护,失败能够自动平衡
  • 支持online和offline场景
  • 支持多种语言

应用场景

  • 日志收集:可以用Kakfa进行日志的收集
  • 消息系统:解耦生产者和消费者
  • 用户活动跟踪:用户行为被记录到Kafka中,消费者取到之后对用户的数据进行分析处理
  • 运营指标:记录运营监控数据、报警和报告
  • 流式处理:比如SparkStream、Storm

基本架构

消息和批次

  • Kafka的数据单元称为消息,可以把消息看成是数据库里的一个数据行或者一条记录。消息由字节组组成。
  • 消息由键,键也是一个字节数组,当消息以一种可控的方式写入不同的分区时,会用到键。
  • 为了提高效率,消息被分批写入Kafka,批次就是一组消息,这些消息属于同一个主题和分区。
  • 把消息分批次可以减少网络开销,批次越大,单位时间内处理的消息就越多,单个消息传输的时间久越长。

消息模式

  • 消息模式(schema)有很多可用的选项。如 JSON、XML,他们缺乏强类型的处理能力。
  • Kafka的开发者喜欢使用ApacheAvro,提供了一种紧凑序列格式化,模式和消息体分开。当模式发生变化时,不需要重新生成代码,它还支持强类型和模式进化。
  • 数据格式一致性对Kafka很重要,因为它消除了消息读写操作之间的耦合性。

主题和分区

Kafka的消息通过主题进行分类,主题可比数据库表或者文件系统里的文件夹。主题可以被分为若干区域,一个主题通过分区分布于Kafka集群中,提供了横向扩展的能力。

在这里插入图片描述

生产和消费者

生产者创建消息,消费者消费消息。
生产者在默认的情况下会把消息均衡的发布到主题的所有分区上:

  • 直接指定消息的分区
  • 根据消息的key散列取模得出分区
  • 轮询指定分区

消费者通过偏移量来区分已经读过的消息,从而消费消息。
消费者是消费组的一部分,消费组保证每个分区只有一个消费者使用,避免重复消费。

在这里插入图片描述

Broker 和 集群

一个独立的Kafka服务器成为Broker,Broker接受来自生产者的消息,为消息设置偏移量,并提交到磁盘进行保存。
Broker为消费者提供服务,对读取分区的请求做出响应,返回已提交到磁盘上的消息。
单个Broker可以轻松处理数千个分区以及每秒百万的消息量。

在这里插入图片描述

每一个集群都有一个Broker是集群控制器(自动从集群的活跃成员中选举出来)
控制器负责管理工作:

  • 将分区分配给Broker
  • 监控Broker

集群中一个分区属于一个Broker,该Broker称为分区首领。

  • 一个分区可以分配给多个Broker,此时会发生分区复制。
  • 分区的复制提高了消息冗余、高可用。
  • 副本分区不负责处理消息的读写。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

苍穹外卖01

0. 配置maven (仅一次的操作 1.项目导入idea 2. 保证nginx服务器运行 (nginx.exe要在非中文的目录下) 开启服务: start nginx 查看任务进程是否存在: tasklist /fi "imagename eq nginx.exe" 关闭ngi…

【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法

1.1 研究背景 自1997年互联网开始在国内的招聘行业发展至今已有二十几年的历史,互联网招聘进入了蓬勃发展的“黄金时代”。根据智研咨询发布的《2023年中国互联网招聘行业发展现状》报告显示,截至2023年5月,中国互联网招聘平台中&#xff0c…

Navicat 17 新特性 | Navicat BI 功能革新升级,助力企业深度挖掘数据潜能

随着 Navicat 17 的发布,在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性,包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级,原生适配国产平台和操作系统和数据字典提升数据结构清晰度,这些新特性…

MySQL查询优化 limit 100000,10加载很慢该怎么优化

需求:查询19年以后发布的商品 数据库表结构如下: 目前数据量:264751 优化前执行时间:0.790s 优化后执行时间:0.467s select id,no,title,cart_title,cid_name from tb_item where id > (select id from tb_item …

Gitlab以及分支管理

一、概述 Git 是一个分布式版本控制系统,用于跟踪文件的变化,尤其是源代码的变化。它由 Linus Torvalds 于 2005 年开发,旨在帮助管理大型软件项目的开发过程。 二、Git 的功能特性 Git 是关注于文件数据整体的变化,直接会将文件…

【Beyond Compare】Beyond Compare下载、安装与使用详细教程

目录 🌺1 概述 🎄2 Beyond Compare 安装包下载 🌼3 安装详细教程 🍂4 免费注册 🌍5 使用详情 🌺1 概述 Beyond Compare 是一款强大的文件和文件夹比较工具,广泛应用于软件开发、文档管理和…

论文中的流程图参考图片

写论文的时候,在绘制流程图时,一直纠结n是大写还是小写,用不用斜体,号两边要不要空格。今天找到了一张标准的流程图来参考。图片来自 Zhi-Chang Ba et al, Combination of DCE-MRI and NME-DWI via Deep Neural Network for Predi…

[Unity] ShaderGraph实现镜头加速线/残血效果 URP

效果如下所示:残血状态时,画面会压暗角,并出现速度线营造紧迫感。 使用到的素材如下,换别的当然也可以。[这是张白色的png放射图,并非皇帝的新图hhh] 这个效果的实现逻辑,其实就是利用time向圆心做透明度的…

【全国大学生电子设计竞赛】2023年G题

🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~

Windows11安装WSL2 笔记240726

以管理员身份打开控制台输入 wsl --status wsl --status如果什么也没有,说明系统还未安装WSL , 执行 wsl --install 进行安装 wsl --install安装完成后, 再次执行 wsl --status 可看到 wsl --status 默认版本: 2 当前计算机配置不支持 WSL1。 若要使用 WSL1,请启用…

CentOS配置NTP服务

更改配置文件 [rootController ~]# vim /etc/chrony.conf 重启服务并设置为开机自启动 [rootController ~]# systemctl restart chronyd.service [rootController ~]# systemctl enable chronyd.service 在另一台CentOS测试 更改配置文件 [rootCompute ~]# vim /etc/chron…

idea 自动生成pojo类

找到这个View>Tool Windows>Database配置数据库 配置好后刷新,查看是否连接上表 然后找到 点击后选择你将要生成的pojo需要保存到哪个文件,然后再次点击,就生成好了,然后自己稍作修改即可使用该pojo类了

AI绘画,100w+播放封神!1分钟教你制作AI视频!各地的守护神终于出现了

前言 神兽教程 这种视频怎么做,Lison也是熬夜很快写了拆解教程~ 一、获取提示词 首先在 Kimi 或者 GPT 上可以查询各个省份的特色动物是什么,用各个省份的特色动物去做这样的图会更有归属感一些。 例如四川是大熊猫,甘肃是马&#xff0c…

深度学习目标检测入门实战

深度学习目标检测入门实战 一、什么是目标检测二、目标检测常用的数据集(开源)(一)VOC数据集(1)背景知识(2)数据集的下载(3)VOC2007 数据集的标注&#xff08…

C++初学(4)

4.1、const限定符 如果程序在多个地方使用同一个常量,则需要修改该常量时,只需修改一个符号定义即可。前面介绍#define语句时说明过,C有更好的处理符号常量的方法,就是使用const关键字来修改变量声明和初始化。假设需要一个表示一…

【Python机器学习】朴素贝叶斯——基于贝叶斯决策理论的分类方法

k-近邻算法和决策树分类器有时会产生错误结果,这是可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值 概率论是许多机器学习算法的基础,所以深刻理解这一主题就非常重要。有一些使用概率论进行分类的方法。首先是从一…

Godot入门 06死亡机制1.0版

限制相机的底部滚动极限,使用标尺工具量出距离,设置距离为100,并设置平滑停止。 添加新场景,添加节点Area2D,设置碰撞的物理层为2,改节点名为Killzone。 拖动Killzone场景到Game场景中。给Killzone添加Coll…

NameSilo域名注册和解析2024版教程(附优惠码)

上次给大家介绍了国外知名的域名注册商Dynadot,今天再给大家分享另一家国外知名的域名注册商NameSilo,同样性价比很高。使用本站提供的优惠码:ieearn.com,你还可以在首次注册购买域名时享受1美元的优惠: NameSilo简介…

语言模型及数据集

一、定义 1、语言模型的目标是估计序列的联合概率,一个理想的语言模型就能够基于模型本身生成自然文本。 2、对一个文档(词元)序列进行建模, 假设在单词级别对文本数据进行词元化。 3、计数建模 (1)其中…

大语言模型是什么,该如何去学习呢

什么是 LLM**?** LLM(大型语言模型, Large Lanage Modle)是一种计算机程序,它可以理解和生成类似人类的文本;它能够像我们人类一样阅读、写作和理解语言。你可以把它想象成一个超级聪明的博学的不知疲惫的24小时全年无休的助手。…