Kafka知识瞎编搞起来

为什么需要消息队列

在高并发的应用场景中,由于来不及同步处理请求,接收到的请求往往会发生阻塞,例如高并发的数据库应用场景,就会有大量的插入,更新请求同时到达数据库,这会导致行或者表被锁住,最后会因为请求堆积过多触发 “连接数过多的异常”错误。

什么是消息队列

从字面上来看,是一个队列,拥有先进先出的特性,用于不同进程间的通信,详细队列采用异步通信机制,即,生产者消费者无需同时与消息队列进行数据交互,消息会一直在队列中,直到被接收者读取。

消息队列主要有哪些作用
应用解耦:多个应用可通过消息队列对相同的消息进行处理,应用之间相互独立,互不影响。如下图客户端上传后就不需要继续关心数据是否被消费,她只关心图片是否被写入了消息队列

可以看出

异步处理: 相比串行和并行,异步处理可以减少处理的时间。

在这里插入图片描述
在这里插入图片描述
假设数据写入数据库,短信信息,邮件信息时间均为20s,异步处理的过程中,数据写入到消息队列是很快的,写入之后,写入短信和邮件的操作相当于同步运行的,等数据写入数据库后,异步系统早就已经完成了,串行 、并行 都是 40s ,异步执行是 20s。

数据限流 :流量高峰期,可以通过消息队列来控制流量,避免流量过大引起系统崩溃。

某些秒杀系统中,可以设置队列的长度,在队列外的请求直接舍弃。

消息通信: 实现点对点消息队列或者聊天室等。

生产者,消费者,消息队列的使用场景。

Kafka 架构简图及核心概念瞎编

在这里插入图片描述

Broker (代理)

在Kafka集群中,一个Kafka实例被称为一个代理,通过在Kafka集群中,一台服务器上部署一个Kafka实例。

Producer (生产者)

producer将消息记录发送到Kafka指定的主题中进行存储,producer还可以自定义算法将消息发送到哪个分区。
(例如,获取消息主键的哈希值,并使用该值对分区数进行哈希取模,得到分区索引)

Consumer (消费者)

从Kafka集群指定的主题中读取消息记录

Consumer Group (消费者组)

一个消费者组可以包含一个或多个消费者程序,使用多分区和多线程模式可以极大提高读取数据的效率。

Topic (主题)

用来区分不同业务类型的消息记录。

Partition (分区)

kafka通过分区来支持物理层面的并发读写,以提高Kafka集群的吞吐量,每个分区内部的消息记录是有序的,每个消息都有一个连续的偏移量序号(offset)

Record (记录)

被实际写入Kafka集群并可被消费者读取的数据被称为记录,组成为 (offset+segment+timestamp)

Kafka设计需求
高吞吐量。

应用于秒级数据流巨大的场景。

高可用队列 。

分布式队列具有大数量的积压能力,并留有副本来进行容灾。

低延时

实时场景对时延要求特别严格。

Kafka特性
异步生产数据

数据以异步的形式发送,大大提高了客户端写数据的效率,在与kafka集群交互的时候,减少等待时间。

偏移量

offset

安全机制

Kafka0.9后,系统添加了安全机制,可以通过SSL和SASL安全机制来进行身份确认(生产者,消费者身份确认)

连接器

外部系统与数据集之间建一个数据流管道,以实现数据的读与写。

机架感知

当kafka某个机架发生故障的时候,通过机架感知让Kafka的备份数据分不到不同的机架上,提高数据的高可用性。

数据流

这一特性就是满足kafka数据经过流计算后重新回到kafka集群中所准备。

时间戳

在kafka0.10及以后的版本中,生产者为写入的每一条消息记录都加入了时间戳,在写入消息的过程中,如果用户没有指定该消息的时间,则该消息的时间会被自动加上。

消息语义

Kafka 0.11 版本中,实现了消息语义
1.至少一次
2.至多一次
3.精准一次

Kafka 适用于哪些场景

1.日志收集
2.消息系统
3.用户轨迹
4.记录运营监控数据
5.实现流处理
6.事件源

发送消息到Kafka主题

Kafka系统支持两种不同的发送方式。

同步模式

同步模式会调用send方法,返回future对象,同时调用get方法等待future对象,看send()方法是否发送成功(指的是发送到某某实例中的某某分区)
同步模式使用场景:
数据写入到Kafka集群代理节点的时候,需要立即知道消息是否写入成功,此时需要同步模式。
在这里插入图片描述

异步模式

使用异步模式发送消息时,消息会先进入缓冲区,生产者会得到一个返回的结果值,之后,缓冲区中的数据会通过异步模式发送到kafka代理节点的某个分区中。
代码方法:调用send方法(写入缓冲区),callback()方法告知结果。

异步模式使用场景:
大数据量,要求耗时比较低的场景。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值