自由式学习
21人加入学习
(0人评价)
大数据___Kafka
价格 免费
承诺服务

课程回顾:

1.消息队列的基本介绍

消息:在两个应用系统之间传递的数据

消息队列:应用系统之间的通信方式,发送消息之后可以马上进行返回

消息的生产者以及消息的消费者,都是无感知对方存在,可以实现解耦的功能

2、常用的消息队列介绍:

同一类消息队列:基于pub/sub模型

rabbitMQ

activeMQ

rocketMQ

kafka消息队列:基于push/poll,不算是一个标准的消息队列

3.kafka消息队列对比:

面试题:kafka的吞吐量是多大:

kafka的benchmark测试,即压力测试,吞吐量一般在每秒钟处理1-3w条数据左右

 

4.消息队列应用场景:

应用解耦

异步处理

限流削峰

5.消息队列两种模式:

点对点:两个人之间私聊

发布与订阅:群聊,一个人发消息,所有人都能看到

6.kafka的基本介绍以及kafka的架构图

producer:生产者,主要用于生产数据

consumer:消费者,主要用于消费数据

broker:kafka节点,服务器

topic:虚拟主题,归结于某一类消息的抽象

partition:分区的概念,数据存储于一个个partition中

segment:文件段,每个partition有多个segment断对方,默认达到1GB后就会生成新的segment段

.log:真实数据都是保存在.log文件中

.index:索引数据,对.log文件里面的数据进行索引

offset:偏移量,每条数据都有对应的唯一的偏移量

consumerGroup:消费者组,任意时刻,一个分区里面的数据,只能被同一个组里面的一个线程消费

7.kafka集群操作

8.kafka的JavaAPI

生产者:KafkaProducer

生产数据的分区问题:

第一种分区策略:既没有指定数据key,也没有指定分区号,使用轮询的方式来发送数据;

第二种分区策略:指定数据key,使用key的hashcode来进行数据分区,但一定注意,数据key要是变化的;

第三种分区策略:制定分区号来进行分区;

第四种分区策略:自定义分区,implements Partitioner

 

面试题:kafka当中数据不均衡,可以使用分区策略进行解决

 

consumer API:KafkaConsumer

提交offset方式:

第一种:自动提交offset,不可靠

第二种:手动提交offset,等到kafka数据处理完成之后手动提交,(enable.auto.commit false)

第三种:消费完一个分区提交一次offset

第四种:指定分区里面的数据进行消费

 

数据重复消费以及数据丢失

exactly once:消费且仅消费一次

at least once:至少消费一次

at most once:至多消费一次

 

kafka等到S他热爱mAPI(了解)

 

kafka当中log的存储机制以及log的查询机制

重点:log的查找机制:二分查找法

第一步:先确定数据的offset落在哪一个segment段里面

原因:一个partition当中有多个segment段,下一个segment文件命名是上一个segment文件最后一条数据的offset

第二步:查找.index文件,通过二分查找,找出offset对应哪一条数据,或者offset最近的一个offset值是多少

 

kafka当中数据不丢失机制:

生产者:ack机制

1:主分区以及副本分区都保存好了

0:主分区保存好了(一般使用0)

-1:没有确认机制,不用管数据是否保存好了

消费者:依靠offset来进行保证

broker:使用副本机制来复制数据到副本分区里面去

面试题:数据的存储,都是存储在磁盘里面:磁盘文件为什么能够做到速度这么快?

第一个原因:使用pageCache页缓存技术

第二个原因:顺序的读写磁盘,顺序的读写磁盘的速度比操作内存更快

[展开全文]

授课教师

高级算法工程师
老师

课程特色

考试(5)
图文(1)
视频(24)