当前位置: 首页 > news >正文

大数据-Storm流式框架(六)---Kafka介绍

Kafka简介

Kafka是一个分布式的消息队列系统(Message Queue)。

官网:Apache Kafka

消息和批次

kafka的数据单元称为消息。消息可以看成是数据库表的一行或一条记录。

消息由字节数组组成,kafka中消息没有特别的格式或含义。

消息有可选的,也是一个字节数组,没有特殊的含义。当消息以一种可控的方式写入不同的分区时会用到键。最简单的例子,为键生成一个一致性散列值,然后使用散列值对主题分区进行取模,为消息选择分区。

为了提高效率,消息被分批次写入kafka。

批次就是一组消息,属于同一个主题分区

分批次传输可以减少网络开销,但是批次越大单位时间内的消息就越多,单个消息的传输时间就越长。

批次数据会压缩,可以提高数据的传输和存储能力,但要做更多的计算。

1、kafka的生产者在发送消息到kafka的时候,如果消息没有指定key,则按照轮询的策略,依次将各个消息发送给不同的主题的分区。

2、如果消息有key,则根据key的hash取模指定该消息发送给主题的哪个分区。

3、还可以直接指定一个消息发送给该主题的哪个分区。

主题(放了很多相似的消息的容器)可以理解为数据库表

主题分为多个分区(为了横向扩展,容量扩展了,并发处理能力扩展了)

每个分区有若干个副本分区(HA)

所有的分区都由kafka的broker来管理。

broker:运行kafka实例的主机。

模式

消息模式是使用一些额外的结构定义消息内容,便于理解。

kafka使用apache avro,紧凑的序列化格式,模式和消息体分开,支持强类型和模式进化,版本前后兼容。

数据格式一致性对于kafka很重要,对消息的读写进行解耦。

主题和分区

kafka的消息通过主题进行分类。主题类似于数据库中的表。

主题可以被分为若干个分区,一个分区就是一个提交日志。

消息以追加的方式写入分区,然后以先入先出的顺序读取。

无法保证整个主题消息的顺序,可以保证一个分区内的消息顺序。

kafka通过分区实现数据冗余和伸缩性。

一个主题通过将分区分布于不同的服务器上,横跨多个服务器,提供更大的性能。

可以把一个主题的数据看成一个流,不管它有多少个分区。流是一组从生产者移动到消费者的数据。

生产者和消费者

生产者(发布者、写入者)将消息发布到一个特定的主题上。

生产者默认情况下把消息均匀地分布到主题的所有分区上,而不关心特定消息会写到哪个分区。

分区器为消息的键生成一个散列值,映射到指定的分区上。这样可以保证包含同一个键的消息被写入到同一个分区。

消费者(订阅者、读者)订阅一个或多个主题,按照消息生成的顺序读取消息。

消费者通过偏移量区分已经读取过的消息。

偏移量是元数据,递增的整数值,在创建消息时kafka把它添加到消息里。

在给定的分区,每个消息偏移量唯一

消费者把每个分区最后读取的消息偏移量保存在zookeeper或kafka上。

消费者是消费者群组一部分,群组保证每个分区只能被一个消费者使用。

消费者与分区之间的映射称为消费者对分区的所有权关系。

broker和集群

一个独立的kafka服务器是一个broker

broker接收来自生产者的消息,为消息设置偏移量,提交消息到磁盘保存。

broker响应消费者请求,对读取分区做出响应,返回已经提交到磁盘上的消息。

单个broker可以轻松处理数千个分区以及每秒百万级的消息量。

每个集群有一个broker是集群控制器(自动选举,zk分布式锁)

控制器将分区分配给broker和监控broker。

一个分区属于一个broker,broker是分区的master

一个分区可以分配给多个broker,提供了消息冗余,多个副本之间主从切换。

消费者和生产者通过master操作消息。

副本分区只负责从主分区同步数据,不需要响应客户端请求。

主从切换需要在完全同步了主分区数据的副本分区中随机挑选做新的主分区。

保留消息是kafka的重要特性。默认的消息保留策略是,要么保存一段时间(7天),要么保留消息到一定大小的字节数(1GB)。当消息数量达到这些上限,旧消息过期被删除。

对每个主题,可配置消息保留策略。

多集群

需求:

        数据类型分离

        安全需求隔离

        多数据中心(灾难恢复)

如果使用多个数据中心,需要在它们之间同步消息。

kafka提供了MirrorMaker工具用于实现多个集群间的消息同步。MirrorMaker核心组件包含一个生产者和一个消费者,两者之间通过队列相连。消费者从一个集群读取消息,生产者把消息发送到另一个集群。

相关文章:

大数据-Storm流式框架(六)---Kafka介绍

Kafka简介 Kafka是一个分布式的消息队列系统(Message Queue)。 官网:Apache Kafka 消息和批次 kafka的数据单元称为消息。消息可以看成是数据库表的一行或一条记录。 消息由字节数组组成,kafka中消息没有特别的格式或含义。 消息有可选的键&#x…...

自动驾驶的未来展望和挑战

自动驾驶技术是一项引人瞩目的创新,将在未来交通领域产生深远影响。然而,随着技术的不断演进,自动驾驶也面临着一系列挑战和障碍。本文将探讨自动驾驶的未来发展方向、技术面临的挑战,以及自动驾驶对社会和环境的潜在影响。 自动驾…...

2.11、自定义图融合过程与量化管线

introduction 介绍如何自定义量化优化过程,以及如何手动调用优化过程 code from typing import Callable, Iterableimport torch import torchvisionfrom ppq import (BaseGraph, QuantizationOptimizationPass,QuantizationOptimizationPipeline, QuantizationSetting,Tar…...

Linux——文件权限属性和权限管理

文件权限属性和权限管理 本章思维导图: 注:本章思维导图对应的Xmid文件和.png文件都以传到“资源” 文章目录 文件权限属性和权限管理1. sudo提权和sudoers文件1.1 sudo提权和成为root的区别 2. 权限2.1 Linux群体2.1.1 为什么要有所属组2.1.2 修改文件…...

数组与链表算法-单向链表算法

目录 数组与链表算法-单向链表算法 C代码 单向链表插入节点的算法 C代码 单向链表删除节点的算法 C代码 对单向链表进行反转的算法 C代码 单向链表串接的算法 C代码 数组与链表算法-单向链表算法 在C中,若以动态分配产生链表节点的方式,则可以…...

Oracle(6) Control File

一、oracle控制文件介绍 1、ORACLE控制文件概念 Oracle控制文件是Oracle数据库的一个重要元素,用于记录数据库的结构信息和元数据。控制文件包含了数据库的物理结构信息、数据字典信息、表空间和数据文件的信息等。在Oracle数据库启动时,控制文件会被读…...

吴恩达《机器学习》2-5->2-7:梯度下降算法与理解

一、梯度下降算法 梯度下降算法的目标是通过反复迭代来更新模型参数,以便最小化代价函数。代价函数通常用于衡量模型的性能,我们希望找到使代价函数最小的参数值。这个过程通常分为以下几个步骤: 初始化参数: 随机或设定初始参数…...

Pytorch detach()方法

detach() 是 PyTorch 中的一个方法,用于从计算图中分离(detach)张量。它可以将一个张量从当前计算图中分离出来,返回一个新的张量,该张量与原始张量共享相同的底层数据,但不再追踪梯度信息。 当你需要在计…...

CTF-php特性绕过

注意&#xff1a;null0 正确 nullflase 错误 Extract变量覆盖 <?php$flagxxx; extract($_GET);if(isset($shiyan)){ $contenttrim(file_get_contents($flag));//trim移除引号if($shiyan$content){ echoctf{xxx}; }else{ echoOh.no;} }?> extract() 函数从数组中将…...

人脸识别测试数据分析

一个人脸识别研究小组对若干名学生做了人脸识别的测试&#xff0c;将测试结果写入到一个文件 dir_50.txt 中&#xff0c;每一行是一张照片的识别结果“_照片编号”“.jpg”的字符串组合&#xff0c;示例如下&#xff1a; [1709020621, 0]_116.jpg [1709020621]_115.jpg [17706…...

MySQL 5.7限制general_log日志大小

背景 需求&#xff1a; 在MySQL 5.7.41中开启general_log 并限制其大小&#xff0c;避免快速增长占用硬盘空间。 解决&#xff1a; 通过定时任务&#xff0c;执行简单的脚本&#xff0c;判断general_log 日志的大小&#xff0c;实现对通用查询日志的“每日备份”或“每日清…...

tomcat9~10猫闪退个人经验

java版本17与8 8版本有jre&#xff0c;java17没有jre 所以在java8版本中将jre和jdk路径一同添加环境是不会出现闪退的&#xff0c;tomcat9没有闪退 但是在10就闪退了&#xff0c;因为java版本太低 java17没有jre&#xff0c;但是可以通过一种方法添加jre到java17的目录 完…...

Linux之J2EE的项目部署及发布

目录 前言 一、会议OA单体项目windows系统部署 1.检验工作 1. 检验jar项目包是否可以运行 2. 验证数据库脚本是否有误 3. 测试项目功能 2. 部署工作 2.1 传输文件 2.2 解压项目及将项目配置到服务器中 2.3 配置数据库 2.4 在服务器bin文件下点击startup.bat启动项目 …...

基于闪电搜索算法的无人机航迹规划-附代码

基于闪电搜索算法的无人机航迹规划 文章目录 基于闪电搜索算法的无人机航迹规划1.闪电搜索搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用闪电搜索算法来优化无人机航迹规划。 …...

【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一&#xff0c;前期准备环境和工具 1&#xff0c;vmware 16.0安装 若已安装&#xff0c;请忽略 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客文章浏览阅读186次&#xff0c;点赞9次&#xff0c;收藏2次。【网络安全 --- 工…...

BUUCTF刷题记录

[BJDCTF2020]Easy MD51 进入题目页面&#xff0c;题目提示有一个链接&#xff0c;应该是题目源码 进入环境&#xff0c;是一个查询框&#xff0c;无论输入什么都没有回显&#xff0c;查看源码也没什么用 利用bp抓包查看有没有什么有用的东西 发现响应的Hint那里有一个sql语句&…...

黑客技术(网络安全)—小白自学

目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&am…...

免登陆 同步脚本 zookeeper kafka集群详细安装步骤

一.免登陆配置 #修改注解名 vim /etc/hostname #修改host文件 vim /etc/hosts 192.168.1.10 kafka1 kafka1 192.168.1.11 kafka2 kafka2 192.168.1.12 kafka3 kafka3#免登陆生成秘钥和授权自动登陆 ssh-keygen -t rsa cd ~/.ssh shh-copy-id kafka1 shh-copy-id kafka2 shh-co…...

深入理解NLP

引子 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能领域中的一个重要研究方向&#xff0c;它涉及了计算机与人类自然语言之间的交互和理解。 1. NLP的起源与发展 NLP的起源可以追溯到早期的机器翻译项目&#xff0c;随着科技的进步&…...

Python-自动化绘制股票价格通道线

常规方案 通过将高点/低点与其 2 个或 3 个相邻点进行比较来检测枢轴点,并检查它是否是其中的最高/最低点。对所有枢轴点进行线性回归以获得上方和下方趋势线。价格离开通道后建仓。通过这样做,我们得到如下所示的价格通道。我认为我们可以利用给定的数据取得更好的结果。...

避开BLE开发第一个坑:搞懂广播帧里的TxAdd、ChSel字段,让你的智能硬件不再‘隐身’

避开BLE开发第一个坑&#xff1a;广播帧关键字段解析与实战排查指南 当你第一次将精心编写的固件烧录进蓝牙芯片&#xff0c;满心期待地用手机扫描设备时&#xff0c;却发现屏幕上空空如也——这种"设备隐身"的挫败感&#xff0c;几乎每个BLE开发者都经历过。问题的根…...

ESP32 + SPH0645麦克风:用Python在电脑上实时播放音频的保姆级教程(附避坑指南)

ESP32 SPH0645麦克风&#xff1a;Python服务端实时音频流处理实战指南 在物联网和嵌入式音频处理领域&#xff0c;实时音频流的采集与传输一直是个既基础又关键的挑战。ESP32作为一款性价比极高的Wi-Fi/蓝牙双模芯片&#xff0c;搭配专业级数字麦克风SPH0645&#xff0c;能够构…...

ChatGPT生成的SQL注入漏洞代码竟通过了87%静态扫描器?安全团队紧急避坑指南(含检测脚本)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT生成的SQL注入漏洞代码竟通过了87%静态扫描器&#xff1f;安全团队紧急避坑指南&#xff08;含检测脚本&#xff09; 近期&#xff0c;某金融企业安全团队在代码审计中发现&#xff0c;一段由ChatGPT生…...

气动黄油机核心技术解析:泵的选择与厂家评估方法论

工业黄油就是润滑脂&#xff0c;属于半固体润滑剂&#xff0c;润滑脂的作用主要是润滑、保护和密封。可以有效降低机械摩擦&#xff0c;防止磨损&#xff0c;同时还能防腐蚀及密封防尘。毫不夸张的说&#xff0c;润滑脂就是万金油&#xff0c;黄油加注机广泛应用于汽车制造业、…...

魔兽争霸III终极优化指南:让你的经典游戏在现代系统上焕发新生

魔兽争霸III终极优化指南&#xff1a;让你的经典游戏在现代系统上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在Window…...

2026 谷歌 GEO 已成流量主战场,不懂 AI 搜索直接掉队

&#x1f4c9; 三个信号同时出现&#xff0c;意味着一个时代结束了&#xff1a;① 你的Google/百度自然搜索流量&#xff0c;连续两个季度下滑超过15%② 你精心优化的"关键词"排名&#xff0c;依然带不来预期的转化③ 你的目标用户&#xff0c;开始在 ChatGPT、Perpl…...

CANN/pypto copysign函数API文档

&#xfeff;# pypto.copysign 【免费下载链接】pypto PyPTO&#xff08;发音: pai p-t-o&#xff09;&#xff1a;Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A…...

ML生产化核心:三层分离架构与Triton模型服务实战

1. 项目概述&#xff1a;这不是一次“部署上线”&#xff0c;而是一场系统性交付实战 “From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着太多被日常讨论轻描淡写带过的重量。它不是教你怎么把 model.predict() 封装成API&#xff0…...

KAG增强生成、AlphaMath推理与Offloading协同架构

1. 项目概述&#xff1a;一场聚焦模型轻量化与推理边界的深度技术切片 “AI Innovations and Insights 23: KAG, AlphaMath, and Offloading”这个标题&#xff0c;乍看像是一场行业峰会的分论坛名称&#xff0c;但拆开来看&#xff0c;它其实是一份高度凝练的技术路线图——KA…...

Donut端到端票据识别:小票图像直出结构化JSON

1. 项目概述&#xff1a;一张小票&#xff0c;如何让AI“看懂”并结构化输出&#xff1f;你有没有试过把超市小票拍张照&#xff0c;想让手机自动提取“总金额&#xff1a;89.50”“商品&#xff1a;牛奶2”“时间&#xff1a;2024-03-12 18:23”这些信息&#xff1f;不是OCR识…...