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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes Taint(污点) 和 Toleration(容忍)

Author:rab 目录 前言一、Taint(污点)1.1 概述1.2 查看节点 Taint1.3 标记节点 Taint1.4 删除节点 Taint 二、Toleration(容忍) 前言 Kubernetes 中的污点(Taint)和容忍(Toleration…

3D模拟场景开发引擎

在3D工程模拟开发中,有一些专门的引擎和工具可供选择,以帮助您创建逼真的三维模拟和模型。以下是一些用于3D工程模拟的开发引擎和工具,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流…

SCADA在污水和供水系统解决方案

1. 引言 随着城市化的不断发展,污水和供水系统的管理变得越来越重要。为了提高运营效率和监控系统状态,许多污水处理厂开始使用SCADA系统。 SCADA系统具有实时数据采集、监控和控制功能,可以帮助污水处理厂运营人员实时了解系统的运行情况&…

Leetcode.274 H 指数

题目链接 Leetcode.274 H 指数 mid 题目描述 给你一个整数数组 c i t a t i o n s citations citations ,其中 c i t a t i o n s [ i ] citations[i] citations[i] 表示研究者的第 i i i 篇论文被引用的次数。计算并返回该研究者的 h h h 指数。 根据维基百科…

Python 学习1 基础

文章目录 基础字符串字面量常用的值类型注释变量print语句数据类型数据类型转换标识符运算符 字符串拓展小结 2023.10.28 周六 最近打算学一下Python,毕竟确实简单方便,而且那个编程语言排名还是在第一。不过不打算靠它吃饭,深不深入暂且不说…

linux-vsftp虚拟多用户

目录 1.安装vsftp 2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件 3.创建登录虚拟用户的名单 4.加密文件 6.需要修改vsftpd的配置文件 7.修改vsftp的配置文件,加载支持虚拟用户模式 8.针对不同用户开启不同权限 9.重启服务 10.测试 安…

React 组件点击事件

点击事件 点击事件方式1、传统类方法(不推荐)2、传统类方法 16.3.0 - 自动绑定(不推荐)3、箭头函数3.1、类组件3.2、函数组件3.3、内联箭头函数 4、useState Hook 点击事件方式 1、传统类方法(不推荐) 当…

记录微调chatglm3

用于记录chatglm3的过程,防止忘记 需要注意的 可以使用xtuner -h查看有哪些功能可以使用。 [2023-10-31 11:40:18,643] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect) 10/31 11:40:22 - mmengine - INFO - Ar…

软件测试之接口测试详解

首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给…

C++启动线程的方法

&#xff08;1&#xff09;函数指针 情况一&#xff1a;主线程有join&#xff0c;正常执行 #include <thread> #include <iostream>void work(int num) {while(num-- > 0) {std::cout << num << std::endl;} }int main() {std::thread t(work, 5);…

塔望食观察丨从“一药难求”看国内退烧药品牌是怎样炼成的

随着新冠疫情防疫的全面放开&#xff0c;感染患者不断增多&#xff0c;市民在未知的恐慌中开启了囤药模式&#xff0c;药店中的“四类药”&#xff08;退烧、止咳、抗病毒、抗生素类药品&#xff09;被一抢而空&#xff0c;尤其是以退烧类药物更为短缺&#xff0c;以解热镇痛的…

简单工厂模式

1 概念及特点 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。 通过专门定义一个类来负责创建其他类的实例&#xff0c;被创建的实例通常都具有共同的父类。 简单工厂模式可以减少客户程序对类创建过程的依赖。 2 实现步骤 1. 提供一个工厂类 简单工厂模式的核…

针灸养生服务预约小程序的效果如何

针灸服务的市场需求度很高&#xff0c;每个城市中都有不少相关品牌&#xff0c;对商家来说&#xff0c;如何引流拓客、打造品牌是生意开展的首要条件之一&#xff0c;且主要以同城用户为主&#xff0c;或连锁情况下为各店引流&#xff0c;但传统线下模式很难实现生意拓展。 那…

缓存和数据库一致性解决方案

引入缓存提高性能 如果你的业务处于起步阶段&#xff0c;流量非常小&#xff0c;那无论是读请求还是写请求&#xff0c;直接操作数据库即可&#xff0c;这时你的架构模型是这样的&#xff1a; 但随着业务量的增长&#xff0c;你的项目请求量越来越大&#xff0c;这时如果每次都…

双十一限时优惠!沃通SSL证书、代码签名证书年度好价

2023年11月01日至11月11日&#xff0c;沃通2023“双十一限时特惠”活动&#xff0c;精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价&#xff0c;部分SSL证书产品低至5折&#xff0c;更有EV代码签名证书爆款特惠&#xff01;多种数字证书一站式采购&#xff0c;解决…

外汇天眼:GOMAX──假网友热心教投资,高返利活动骗入金

在通讯科技如此发达的今日&#xff0c;人们愈来愈习惯透过网路交友&#xff0c;寻找志同道合的伙伴&#xff0c;甚至发展一段亲密关系。 然而&#xff0c;近年来假交友诈骗十分猖獗&#xff0c;至今已造成许多民众极大的财务损失&#xff0c;成为无法忽视的社会问题。 不久前&a…

听GPT 讲Rust源代码--library/std(6)

题图来自 Why you should use Python and Rust together[1] File: rust/library/std/src/sys/unix/thread_parking/netbsd.rs 文件netbsd.rs位于Rust源代码的rust/library/std/src/sys/unix/thread_parking目录下。该文件是Rust标准库中用于Unix操作系统的线程等待和唤醒机制的…

SQLAlchemy删除所有重复的用户|Counter类运用

Python标准库中的collections模块中的Counter类。Counter类用于计算可迭代对象中元素的出现次数&#xff0c;并以字典的形式返回结果&#xff0c;其中键是元素&#xff0c;值是该元素的出现次数。 for name, count in Counter(names).items() 是一个循环语句&#xff0c;它用于…

【小算法】C++ 时间戳转换

背景 使用 C 而不是 C 的方法来实现时间戳转换问题。 方法 简化 #include <ctime> #include <chrono> #include <iomanip> using sys_clock std::chrono::system_clock; using time_point_t sys_clock::time_point; using time_duration_t sys_clock:…

基于单片机的智能电子鼻的设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…