首页 > 其他分享 >(一)kafka从入门到精通之初识kafka

(一)kafka从入门到精通之初识kafka

时间:2023-07-02 20:56:39浏览次数:31  
标签:入门 一个 分区 主题 kafka 初识 集群 消息

一、发布订阅系统

在学习kafka之前,我们先来看看什么是发布订阅系统。

概念

数据的发送者不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类,接受者订阅它们,以便接受特定类型的消息。发布与订阅系统一般会有一个broker,也就是发布消息的中心点,来进行提供服务。

发展历程

先来看第一种简单的消息队列

在这里插入图片描述

随着业务的发展,我们的消息队列需要适应更多的消费者和数据采集来的入口,那么就出现第二种队列架构。

在这里插入图片描述

于是我们尝试着通过一个中间者去把这些消息整合起来,提供一个统一的消息入口和出口。

在这里插入图片描述

同时,针对每一种业务场景,我们也可以形成多个消息队列系统来支撑我们的业务,形成独立的队列系统。

在这里插入图片描述

虽然这种方式比直接使用点对点的连接要好得多,但这里有太多重复的地方,因此而产生的代价就是要为数据队列维护多个系统,每个系统要有各自的缺陷和不足,因此我们迫切的需要一个单一的集中式系统,它可以用来发布通用类型的数据,其规模可以随着公司业务的增长和增长,这就是kafka出现的背景。

二、kafka相关概念

消息和批次

kafka的数据单元被称为消息,类似于我们的关系型数据库中的一个数据行或一条记录。消息有一个可选的元数据,也就是key,kafka会根据这个key生成一个一次性散列值,然后使用该散列值对主题分区数进行取模,为消息进行分区,这样可以保证具有相同key的消息总是被写到相同的分区上。
为了提高发送效率,消息被分批次写入kafka。批次就是一组消息,这些消息属于同一个主题的分区,有利于减少网络传输的开销。不过如果批次过大,则消息发送的时候会产生一定的延迟,所以要在时间延迟和吞吐量之间做出权衡,批次越大,单位时间内处理的消息越多,单位消息的发送时间就越长,批次数据会被压缩,这样就可以提升传输数据和存储能力,但要做更多的计算处理。

主题和分区

kafka的消息通过主题进行分类。主题就好比数据库的表,主题可以分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。
要注意的是,一个主题一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。
kafka通过分区来实现数据冗余和伸缩性,分区可以分布在不同的服务器上,也就是说,一个主题可以横跨多个服务器,以此来提供比单个服务器更强大的性能。
在这里插入图片描述

生产者和消费者

kafka的客户端就是kafka系统的用户,他们被分为两种基本类型:生产者和消费者。

生产者创建消息,一般情况下,一个消息会被发布到一个特定的主题上,通常在默认情况下,把消息均衡的分布到主题的所有分区上,而并不关心特定消息会被写到哪个分区。

不过,在某些情况下,生产者会把消息直接写到指定的分区,这通常是通过消息的key和分区器来实现的,分区器为可以生成一个散列值,并将其映射到指定的分区上,这样就可以保证包含同一个key的消息会被写到同一个分区上,生产者也可以使用自定义的分区器,根据不同的业务规则,将消息映射到对应分区。

消费者读取消息,消费者通过检查消息的偏移量来区分已经读取过的消息。消费者是消费者群组的一部分,说也就是说会有一个和多个消费者共同读取一个主题,群组保证每个分区只能被一个消费者使用。

在这里插入图片描述

Broker和集群

一个独立的kafka服务器被称为broker,broker接受来自生产者的消息,为消息设置偏移量,并提交到磁盘保存。broker也为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。

在kafka每一个集群中都有一个broker充当了集群控制器的角色,也就是leader。

在这里插入图片描述

多集群

kafka多集群部署的原因主要是下面几个:

  1. 数据类型分离
  2. 安全需求管理
  3. 多数据中心(灾备容错)

如果使用多个数据中心,就要在他们之间复制消息。kafka的消息复制机制只能在单个集群里进行,不能在多个集群之间进行。
针对集群间的消息复制场景,kafka提供了一个叫做mirrorMaker的工具,它的核心组件包含了一个生产者和消费者两者之间,通过一个队列相连。

标签:入门,一个,分区,主题,kafka,初识,集群,消息
From: https://www.cnblogs.com/yin-feng/p/17521368.html

相关文章

  • (二)kafka从入门到精通之kafka的优势
    学习传送门(一)kafka从入门到精通之初识kafka一、常用消息队列比较基于发布与订阅的消息系统那么多,为什么Kafka会是一个更好的选择呢?咱们先来简单的看看mq的一个对比图吧。特性ActiveMQRabbitMQRocketMQKafka生产者消费者模式支持支持支持支持发布订阅......
  • 初识标识符
    关键字abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementisimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicretur......
  • 入门前端学习内容
    html css js es6(重要)axiosgitwebpacknodejsvue2和3uniapp,react和Typescript可以等到工作后再学UI组件库可以学下ElementUI,其中webpack和nodejs了解即可,其他的最好认真学习......
  • Kong入门学习实践(8)流量控制插件
    Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件。一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件。今天,我们就来了解一些常用的流量控制插件。关于流量控制插件我们在实际应用往往会有一些场景需要限流和限频,从而管理入站和出站的流量。......
  • ASP.NET Core SignalR 入门
    本章将和大家分享使用SignalR生成实时应用的基础知识。通过本文您将学习如何:使用ASP.NETCoreSignalR+MVC+Vue2.x+require最终创建一个正常运行的简易聊天应用。废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示:本Demo的Web项目为ASP.NETCoreWeb应用程序(目......
  • Linux 图形栈从入门到放弃 --- Linux 图形相关概念简介
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  在日常生活中,像我们常用的ubuntu(Linux),windows,android,mac等等系统,我们都能够看到丰富的图形界面。此外,如果大家了解过以前的嵌入式系统,很多......
  • LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  ubuntu18.04前言  我们这里有一块嵌入式板卡,当我们通过PING测试内网IP时,发现外网IP访问正常,但是测试域名访问一直报unknownhost。一般来说,在ubun......
  • Maven cheat sheet 手抄:从入门到无语
    Mavencheatsheet手抄写给懒人看的概念生命周期由阶段构成:validate,compile,test,package,verify,install,deploy基础基础编译:mvncleanpackage环境变量:MAVEN_HOME,MAVEN_OPTS,MAVEN_ARGS配置打印激活的配置:mvnhelp:active-profiles激活Profile:-Pprofi......
  • 工业机器人课程推荐 ROS机械臂开发从入门到实战
    ROS系统最早起源于2007年斯坦福大学人工智能实验室,是目前世界上较主流且使用人数众多的开源机器人操作系统。ROS的发展历史并不长,国内配套的资源也不够丰富,二次开发相对困难,大部分产品并不配备相应的支持包。为解决机械臂使用者的难题,我们引进了一款ROS系统的机械臂,它配备着相应......
  • Excel入门_2023/6/30
    常见用途整理记录(美化、简化)数据计算、分析数据展现难点问题数据量、计算效率、价值赋予、组织协作学习目标学习核心功能,解放学习思路,做到举一反三。学习方法  ......