一文了解kafka

转自:ImportNew  一文了解Kafka

功能:

解耦

缓存:缓冲

削峰限流(灵活性与峰值处理能力)

可恢复性

异步通信

主要概念:

borker:topic、message、partition、segment、log&index、replication(leader & follower)

             broker:一个Kafka服务,ip:port

             topic:逻辑概念,主题,相当于一张数据库表。message:消息,相当于表中的一条记录

             partition:物理概念,分区,一张逻辑表实际存储时分为多个分区来存储。

                                                       1个partition对应文件系统中的1个文件夹,名字为topic名+partition序号。

             segment:物理概念,段,每个分区分为多个segment。

                                                       1个segment对应文件系统中的2个文件.log和.index文件。

                                                        文件名为segment中最小索引的offset值。

                                                        .log文件存储message的实际内容,.index文件存储每个message的offset和其数据在.log文件中的偏移量。如果要去消费offset为3的数据,首先通过二分法查找数据在哪个.index文件中,然后在.index文件中查找其数据在.log文件中的偏移量

producer:一段代码,生产消息,指定topic后向broker发送消息。

consumer:一段代码,消费特定topic下的消息。

                

发布/订阅模式:

一条消息可以被多个消费者组消费。但是对于同一个消费者组的消费者来说,一条消息只能被组内的一个消费消费;

消费者组:分布式环境下,一段消费者代码部署到了多个服务器上,每个服务上的这段代码都是一个消费者,形成了消费者组。                    在业务逻辑上,一条消息也只允许被其中的一个消费者消费。

                不同的消费者代码,对同一条消息的业务处理逻辑不同,因此多个不同的消费者组,可以对同一条消息进行消费。

技术实现:对每个消费者组,记录其在每个partition上的消费的offset,offset只能加,不能回退。

可靠性和一致性的技术实现:

可靠性通过ACK实现:

partition收到数据后,向生产者发送ACK,如果生产者收到ACK就进行下一轮的发送,否则重新发送。

发送ACK的时机:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章