大数据-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核心组件包含一个生产者和一个消费者,两者之间通过队列相连。消费者从一个集群读取消息,生产者把消息发送到另一个集群。

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

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

相关文章

【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

【Unity精华一记】特殊文件夹

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

云原生安全:如何保护云上应用不受攻击

文章目录 云原生安全的概念1. 多层次的安全性2. 自动化安全3. 容器安全4. 持续监控5. 合规性 云原生安全的关键挑战1. 无边界的环境2. 动态性3. 多云环境4. 容器化应用程序5. API和微服务 如何保护云上应用不受攻击1. 身份验证和访问控制示例代码: 2. 数据加密示例代…

探秘Kafka背后的幕后机关,揭示消息不丢失或重复的原理与实践经验

背景 相信大家在工作中都用过消息队列,特别是 Kafka 使用得更是普遍,业务工程师在使用 Kafka 的时候除了担忧 kafka 服务端宕机外,其实最怕如下这样两件事。 消息丢失。下游系统没收到上游系统发送的消息,造成系统间数据不一致。…

PyTorch中grid_sample的使用方法

官方文档首先Pytorch中grid_sample函数的接口声明如下: torch.nn.functional.grid_sample(input, grid, modebilinear, padding_modezeros, align_cornersNone)input : 输入tensor, shape为 [N, C, H_in, W_in]grid: 一个field flow, shape为…

JAVA实现校园失物招领管理系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 招领管理模块2.2 寻物管理模块2.3 系统公告模块2.4 感谢留言模块 三、界面展示3.1 登录注册3.2 招领模块3.3 寻物模块3.4 公告模块3.5 感谢留言模块3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 基于VueSpri…

深入剖析SQL与NoSQL的优劣势,帮你决定最佳数据存储方案

你是否在为系统的数据库来一波大流量就几乎打满 CPU,日常 CPU 居高不下烦恼?你是否在各种 NoSQL 间纠结不定,到底该选用哪种最好?今天的你就是昨天的我,这也是我写这篇文章的初衷。 作为互联网从业人员,我们要知道关系型数据库…

蓝桥杯 第 2 场算法双周赛 第4题 通关【算法赛】c++ 优先队列 + 小根堆 详解注释版

题目 通关【算法赛】https://www.lanqiao.cn/problems/5889/learning/?contest_id145 问题描述 小蓝最近迷上了一款电玩游戏“蓝桥争霸”。这款游戏由很多关卡和副本组成,每一关可以抽象为一个节点,整个游戏的关卡可以抽象为一棵树形图,每…

群晖上搭建teamspeak3语音服务器

什么是 TeamSpeak ? TeamSpeak (简称 TS)是一款团队语音通讯工具,但比一般的通讯工具具有更多的功能而且使用方便。它由服务器端程序和客户端程序两部分组成,如果不是想自己架设 TS 服务器,只需下载客户端程…

SQL Server Management Studio (SSMS)的安装教程

文章目录 SQL Server Management Studio (SSMS)的安装教程从Microsoft官网下载SQL Server Management Studio安装程序。选中安装程序右键并选择“以管理员的身份运行”选项选择安装目录,单击“安装”按钮开始安装过程安装成功界面安装完成后,您可以启动S…

LaTeX:在标题section中添加脚注footnote

命令讲解 先导包: \usepackage{footmisc} 设原标题为: \section{标题内容} 更改为: \section[标题内容]{标题内容\protect\footnote{脚注内容}} 语法讲解: \section[]{} []内为短标题,作为目录和页眉中的标题。…

Java面向对象(进阶)-- this关键字的使用

文章目录 一、引子(1) this是什么?(2)什么时候使用this1.实例方法或构造器中使用当前对象的成员2. 同一个类中构造器互相调用 二、探讨(1)问题(2)解决 三、this关键字&am…

Android framework服务命令行工具框架 - Android13

Android framework服务命令行工具框架 - Android13 1、framework服务命令行工具简介2、cmd 执行程序2.1 目录和Android.bp2.2 cmdMain 执行入口2.3 cmd命令 3、am命令工具,实质脚本执行cmd activity3.1 sh脚本3.2 activity服务注册3.3 onShellCommand执行 4、简易时…

Linux 系统调用IO口,利用光标偏移实现文件复制

用系统调用IO函数实现从一个文件读取最后2KB数据并复制到另一个文件中,源文件以只读方式打开,目标文件以只写的方式打开,若目标文件不存在,可以创建并设置初始值为0664,写出相应代码,要对出错情况有一定的处…

Peter算法小课堂—归并排序

位运算 << 这个符号相当于将一个数二进制往左移动几位&#xff0c;如(100110)2<<1(001100)2。相当于乘以2的k次方 >> 这个符号相当于将一个数二进制往右移动几位&#xff0c;如(100110)2<<1(0100110)2。相当于除以2的k次方 归并排序 先看一个视频…

macOS Sonoma 14.1正式版(23B74)发布(可下载黑白苹果镜像)

系统介绍 黑果魏叔苹果今天为 macOS Sonoma 推出了 14.1 版本更新&#xff0c;魏叔发现&#xff0c;本更新主要改善了 Apple Music 界面&#xff0c;设置中新增保修状态&#xff0c;并修复了多项错误内容。 根据苹果的新说明&#xff0c;这次的 Mac 更新不仅提供了一系列的改善…

asp.net教务管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 教务管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net教务管理系统 应用技术&a…

数据链路层和DNS之间的那些事~

数据链路层&#xff0c;考虑的是两个节点之间的传输。这里面的典型协议也很多&#xff0c;最知名的就是“以太网”。我们本篇主要介绍的就是以太网协议。这个协议规定了数据链路层&#xff0c;也规定了物理层的内容。 目录 以太网帧格式 帧头 载荷 帧尾 DNS 从输入URL到…

(c语言进阶)字符串函数、字符分类函数和字符转换函数

一.求字符串长度 1.strlen() (1)基本概念 头文件&#xff1a;<string.h> (2)易错点&#xff1a;strlen()的返回值为无符号整形 #include<stdio.h> #include<string.h> int main() {const char* str1 "abcdef";const char* str2 "bbb&q…

Linux常见问题解决操作(yum被占用、lsb无此命令、Linux开机进入命令界面等)

Linux常见问题解决操作&#xff08;yum被占用、lsb无此命令、Linux开机进入命令界面等&#xff09; 问题一、新安装的Linux使用命令lsb_release提示无此命令&#xff0c;需先安装再使用 Linux安装lsb命令 lsb是Linux Standard Base的缩写&#xff08;Linux基本标准&#xff…