11.4.1、kafka__kafka概述,kafka消息队列应用,架构,生产者消费者模型,消费者组,kafka写速度快,零拷贝技术

1、kafka的概述

发布以订阅的分布式消息系统

2、消息队列应用

(1)系统之间的解耦合
(2)峰值压力缓冲
(3)异步通信

3、kafka的架构

11.4.1、kafka__kafka概述,kafka消息队列应用,架构,生产者消费者模型,消费者组,kafka写速度快,零拷贝技术_第1张图片

producer:消息生存者
consumer:消息消费者

broker:kafka集群的server,
负责处理消息读、写请求,存储消息

topic:消息队列/分类(消息的分类,类似表头)

Queue里面有生产者消费者模型
broker就是代理,在kafka cluster这一层这里,其实里面是有很多个broker
topic就相当于queue
图里没有画其实还有zookeeper,这个架构里面有些元信息是存在zookeeper上面的,整个集群的管理也和zookeeper有很大的关系

4、kafka的消息存储和生产消费模型

一个topic分成多个partition

每个partition内部消息强有序,其中的每个消息都有一个序号叫offset
一个partition只对应一个broker,一个broker可以管多个partition
消息不经过内存缓冲,直接写入文件
根据时间策略删除,而不是消费完就删除
producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略

—伪分布式集群,只能有一个broker,可以有多个topic
—一个分区,要是多个分区的话可以将数据轮询写2个分区或hash(负载均衡)

11.4.1、kafka__kafka概述,kafka消息队列应用,架构,生产者消费者模型,消费者组,kafka写速度快,零拷贝技术_第2张图片

5、topic,broker

kafka里面的消息是有topic来组织的,简单的我们可以想象为一个队列,一个队列就是一个topic,然后它把每个topic又分为很多个partition,这个是为了做并行的,在每个partition里面是有序的,相当于有序的队列,其中每个消息都有个序号,比如0到12,从前面读往后面写
一个partition对应一个broker,一个broker可以管多个partition,比如说,topic有6个partition,有两个broker,那每个broker就管3个partition

6、消费者模型(组)

consumer自己维护消费到哪个offset

每个consumer都有对应的group

group内是queue消费模型
各个consumer消费不同的partition
因此一个消息在group内只消费一次
group间是publish-subscribe消费模型
各个group各自独立消费,互不影响
因此一个消息在被每个group消费一次
11.4.1、kafka__kafka概述,kafka消息队列应用,架构,生产者消费者模型,消费者组,kafka写速度快,零拷贝技术_第3张图片

7、特点

只有一个分区可以先入先出,多个分区不可以(多线程消费数据)
高性能:单节点支持上千个客户端,百MB/s吞吐

持久性:消息直接持久化在普通磁盘上且性能好

分布式:数据副本冗余、流量负载均衡、可扩展

很灵活:消息长时间持久化+Client维护消费状态

8、kafka快的原因,写磁盘

有人可能会说kafka写磁盘,会不会是瓶颈,其实不会而且是非常好的,为什么是非常好的,因为kafka写磁盘是顺序的,所以不断的往前产生,不断的往后写
kafka还用了sendFile的0拷贝技术,提高速度,而且还用到了批量读写,
一批批往里写,64K为单位,100K为单位,每一次网络传输量不会特别小,RTT(RTT:Round-TripTime往返时间)的开销就会微不足道,对文件的操作不会是很小的IO,也会是比较大块的IO

9、零拷贝(不经过客户端读取)

从WIKI的定义中,我们看到“零拷贝”是指计算机操作的过程中,CPU不需要为数据在内存之间的拷贝消耗资源。而它通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间(User Space)而直接在内核空间(Kernel Space)中传输到网络的方式。
11.4.1、kafka__kafka概述,kafka消息队列应用,架构,生产者消费者模型,消费者组,kafka写速度快,零拷贝技术_第4张图片

你可能感兴趣的:(Dcc11,Flink,&,Kafka-原创,kafka,架构,分布式)