首页 > 其他分享 >Kafka概述--消息中间件

Kafka概述--消息中间件

时间:2024-11-07 19:15:16浏览次数:3  
标签:-- 分区 broker kafka topic 消息 消息中间件 Kafka

目录

1.1 定义

1.2、kafka的中的组成成员

1.3 消息队列(中间件)

1.3.1 传统消息队列的应用场景

1.3.2 消息队列的两种模式

1.4 Kafka 基础架构

1.5、kafka的名词概念


1.1 定义

kafka 面试非常的重要,做实时或者准实时项目必用工具(绕不开)。Kafka就是用来存储消息的,消息中间件。

     Kafka是分布式的发布—订阅消息系统。它最初由LinkedIn(领英)公司发布,使用Scala语言编写,于2010年12月份开源,成为Apache的顶级项目。Kafka是一个高吞吐量的、持久性的、分布式发布订阅消息系统。它主要用于处理活跃live的数据(登录、浏览、点击、分享、喜欢等用户行为产生的数据)。
     kafka 在大数据技术中,属于实时计算架构中的一员悍将!

Scala语言的底层是Java。越底层速度越快。
    
   Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
   Java工程师:  一辈子都在研究高并发。
   大数据工程师:做分析(离线、实时)【分析过往数据,也可以预测未来】
    发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。
    
   Kafka最新定义 : Kafka是 一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

   IBM--全球最大的信息技术和业务解决方案公司,xxx领导者。

日常由于磁盘的读取速度是100M/S 左右,日常flume --> Hadoop 是可以的,但是双十一的话,采集速度超过100M/S 就会造成 Hadoop无法处理的情况,此时可以使用KAFKA.

1.2、kafka的中的组成成员

kafka四大核心

生产者API
允许应用程序发布记录流至一个或者多个kafka的主题(topics)。

消费者API
允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流

StreamsAPI
允许应用程序充当流处理器(stream processor),从一个或者多个主题获取输入流,并生产一个输出流到一个或 者多个主题,能够有效的变化输入流为输出流。

ConnectorAPI
允许构建和运行可重用的生产者或者消费者,能够把kafka主题连接到现有的应用程序或数据系统。例如:一个连 接到关系数据库的连接器可能会获取每个表的变化。

1.3 消息队列(中间件)

目前企业中比较常见的 消息 队列产 品主 要有Kafka、ActiveMQ 、RabbitMQ 、 RocketMQ 等。

在大数据场景主要采用 Kafka 作为消息队列。在 JavaEE 开发中主要采用 ActiveMQ、 RabbitMQ、RocketMQ。

Kafka: 是最适用于大数据技术的消息中间件。

RabbitMQ: Erlang编写。

RocketMQ: 阿里出品,纯java,性能特别好,但是特别大,不好安装,还收费。

ActiveMQ: 实现了SUN公司当年JMS规范的,学习成本不高,也比较好用,性能不是特别高。

1.3.1 传统消息队列的应用场景

传统的消息队列的主要应用场景包括:缓存/消峰(削峰填谷)解耦异步通信。

- 解耦 各系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在

重要的作用

- 冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险

- 扩展 消息系统是统一的数据接口,各系统可独立扩展

- 峰值处理能力 消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求

重要的作用

- 可恢复性 系统中部分键失效并不会影响整个系统,它恢复会仍然可从消息系统中获取并处理数据

- 异步通信 在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

场景解释:

缓冲/峰(萧峰):有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

削峰填谷

12306 网站 --> 天天崩
阿里团队介入,帮它搞搞。

规律:当一个事物产生会牵动另一些事物的发生,11 --> 阿里技术不断演化(技术不断的更新)

阿里为了搞11 --> 服务器 --> 阿里云诞生了。

双十一假如每秒有10亿人/s ,但是集群处理能力只有1千万人/s ,此时是顶不住压力的,所以可以中间添加一个消息队列来解决这个问题。

解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束(媒婆)

3000万/单身男性。

异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。

1.3.2 消息队列的两种模式

1.4 Kafka 基础架构

ISR:In-Sync Replicas isr 是一个副本的列表,里面存储的都是能跟leader 数据一致的副本

1)Producer:消息生产者,就是向 Kafka broker 发消息的客户端。

2)Consumer:消息消费者,向 Kafka broker 取消息的客户端。

3)Consumer Group(CG):消费者组,由多个 consumer 组成。消费者组内每个消 费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

4)Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。

5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic

6)Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。

7)Replica:副本。一个 topic 的每个分区都有若干个副本,一个 Leader 和若干个 Follower

8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。

9)Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

1.5、kafka的名词概念

- Kafka服务:
- Topic:主题,Kafka处理的消息的不同分类。
- Broker:消息服务器代理,Kafka集群中的一个kafka服务节点称为一个broker,主要存储消息数据。存在硬盘中。每个topic都是有分区的。
- Partition:Topic物理上的分组,一个topic在broker中被分为1个或者多个partition,分区在创建topic的时候指定。
- Message:消息,是通信的基本单位,每个消息都属于一个partition
- Kafka服务相关
- Producer:消息和数据的生产者,向Kafka的一个topic发布消息。
- Consumer:消息和数据的消费者,定于topic并处理其发布的消息。
- Zookeeper:协调kafka的正常运行。

名词解释:

第一个:Topic

kafka将消息以topic为单位进行归类

topic特指kafka处理的消息源(feeds of messages)的不同分类。

topic是一种分类或者发布的一些列记录的名义上的名字。kafka主题始终是支持多用户订阅的;也就是说,一 个主题可以有零个,一个或者多个消费者订阅写入的数据。

在kafka集群中,可以有无数的主题。

生产者和消费者消费数据一般以主题为单位。更细粒度可以到分区级别。

第二个:分区

Partitions:分区数:控制topic将分片成多少个log,可以显示指定,如果不指定则会使用 broker(server.properties)中的num.partitions配置的数量。
一个broker服务下,是否可以创建多个分区?
可以的,broker数与分区数没有关系; 在kafka中,每一个分区会有一个编号:编号从0开始
每一个分区的数据是有序的

说明-数据是有序 如何保证一个主题下的数据是有序的?(生产是什么样的顺序,那么消费的时候也是什么样的顺序)

topic的Partition数量在创建topic时配置。

Partition数量决定了每个Consumer group中并发消费者的最大数量。

Consumer group A 有两个消费者来读取4个partition中数据;Consumer group B有四个消费者来读取4个 partition中的数据

第三个:副本数

副本数(replication-factor):控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数
一个broker服务下,是否可以创建多个副本因子?
不可以;创建主题时,副本因子应该小于等于可用的broker数。 副本因子过程图

副本因子的作用:让kafka读取数据和写入数据时的可靠性。

副本因子是包含本身|同一个副本因子不能放在同一个Broker中。

如果某一个分区有三个副本因子,就算其中一个挂掉,那么只会剩下的两个钟,选择一个leader,但不会在其 他的broker中,另启动一个副本(因为在另一台启动的话,存在数据传递,只要在机器之间有数据传递,就 会长时间占用网络IO,kafka是一个高吞吐量的消息系统,这个情况不允许发生)所以不会在零个broker中启 动。

如果所有的副本都挂了,生产者如果生产数据到指定分区的话,将写入不成功。

lsr表示:当前可用的副本

第四个:kafka Partition offset

任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),
offset是一个long类型数字,它唯一标识了一条消息,消费者通过(offset,partition,topic)跟踪记录。

第五个:分区数和消费组的关系。

消费组: 由一个或者多个消费者组成,同一个组中的消费者对于同一条消息只消费一次。某一个主题下的分区数,对于消费组来说,应该小于等于该主题下的分区数。如下所示:

如:某一个主题有4个分区,那么消费组中的消费者应该小于等于4,而且最好与分区数成整数倍
1    2    4
同一个分区下的数据,在同一时刻,不能被同一个消费组的不同消费者消费

总结:分区数越多,同一时间可以有越多的消费者来进行消费,消费数据的速度就会越快,提高消费的性能.

标签:--,分区,broker,kafka,topic,消息,消息中间件,Kafka
From: https://blog.csdn.net/weixin_53709379/article/details/143605391

相关文章

  • Kafka 快速入门-安装部署
    目录1.1安装部署1.1.1集群规划1.1.2集群规划1.1.3集群启停脚本1.1安装部署1.1.1集群规划bigdata01bigdata02bigdata03zkzkzkkafkakafkakafka1.1.2集群规划每次进入linux都会自动进入base环境,如何关闭basecondadeactivate 手动......
  • CSP-JS总结(修订版)
    CSP-J/S2024游记初赛CSP-J开头的int确实挺搞心态的,组合排列也放得挺前,不过顺利做出来了做完颓了。结果错挺多的,赛后感觉还是不够细致,下午的比赛要更细心一点小图灵:89.5怎么了呢?连90都上不了了CSP-S看题然后发现一堆不会做有点懵,感觉阅读程序不是很能读得懂然后完......
  • miniconda和anaconda区别-杂记
    小小的记录发现两者在创建新环境的使用上没用区别anaconda下载会在默认的base环境里下载点包,不过还是会有需要的大的计算的包没有,得自己下。本来以为anaconda会在创建环境时帮弄好基本的几个大包,但是没有,和miniconda一样的历程我是原来听gpt用的miniconda,后来部署包有点麻......
  • 语音 AI 迎来爆发期,也仍然隐藏着被低估的机会丨RTE2024 音频技术和 Voice AI 专场
      在人工智能快速发展的今天,语音交互技术正经历一场革命性的变革。从语音识别到语音合成,再到端到端的语音对话系统,这一领域的创新正以前所未有的速度推进。这些进步不仅提升了技术指标,更为实时翻译、虚拟数字人、智能客服等实时互动场景带来了新的可能。 本届RTE2024大......
  • import导入文件路径注意点
    目录结构-lib-main.py-package1-subA.py-subB.py-package2-subC.py-subD.py要在main文件中导入subA#方案1-main.pyfrompackage1importsubA#方案2-main.pyfromlib.package1importsubA要在main文件中,通过subA导......
  • LeetCode LCR135[报数]
    题目链接LeetCodeLCR135[报数]详情实例题解思路通过pow函数对10进行幂运算,来获取报数范围然后循环遍历通过push_back方法将数字加入到容器内代码classSolution{public:vector<int>countNumbers(intcnt){vector<int>iRetVec;......
  • 书缘·红楼梦诗词解析
    书缘·红楼梦诗词解析文件:刘耕路-红楼梦诗....epub链接:https://pan.baidu.com/s/1RrnZjAV6Ggif7-GymWQWhQ提取码:59i9目录序女娲石上偈语题《金陵十二钗》一绝太虚幻境石牌坊联语癞头僧嘲甄士隐贾雨村对月口占五言律贾雨村口吟联语贾雨村对月寓怀口号一绝跛足道人念的......
  • Bean对象之间属性复制
    在使用Spring的BeanUtils复制属性时会存在一个问题,就是源对象的属性会全部覆盖带目标对象上,即使源对象的属性为null,就像下面这样.@Data@AllArgsConstructor@NoArgsConstructorstaticclassAmazon{privateStringsite;privateStringpro......
  • AUTOSAR解决方案 — INTEWORK-EAS-CP
        随着汽车电子技术的发展,汽车电子领域的嵌入式软件规模越来越庞大,AUTOSAR的软件架构和方法论已被越来越多的OEM和供应商认可。在国外市场,越来越多的AUTOSAR车型上市,各大OEM也已对其供应商提出了明确的符合AUTOSAR的要求。在国内,经过一阶段的积累和预研,各OEM也正式启动了......
  • 多校A层冲刺NOIP2024模拟赛19
    讲个笑话:(讨论时间)huge:(叹气)这讨论啊,就是改不了,这换了铃声了,也没……众人:现在是讨论时间啊。huge:(停顿)那刚才大课间那会哇啦哇啦的……图书管理简要题意给定一个长度为\(n(n\le10^4)\)的排列,求\(\sum\limits_{l=1}^n\sum\limits_{r=l}^n[r-l为偶数]l\timesr\timesf_{l,r}\)......