kafka

2021-07-28  本文已影响0人  Jackie_4f4d

1. 基础概念

1.1 特性

1. 高吞吐量、低延迟: 每秒处理10^5级别条消息,采取partition、consumer group特性,先写入os层面的页缓存中,继而磁盘化。

2. 可扩展性:支持集群

3. 容错性:若集群中的副本数量为n,则允许n-1个节点失败

4. 高并发:支持若干个客户端同时读写。

1.2 组件

Producer:消息的生产方                            Consumer:消息的消费方

Broker:物理概念,表示集群中的机器      Topic:消息的主题

Partition:物理层面上的分组,决定并发处理能力,但同时会增加延迟(数据寻址延迟)

Leader: 首领  Follower:从者  Replication: 副本 message: 消息实体  offset: 地址偏移量

Controller: 集群中承担broker的主从的选举工作,用于管理和协调集群

可以用户自定义分区,否则根据cluster和topic和key决定分区

降低耦合

异步通信

削峰和缓冲

Isr osr ar

https://zhuanlan.zhihu.com/p/89294602

2. 架构

2.1 Producer

流程

2.2 Consumer

流程

3. 集群

集群配置

4. 源码

4.1 集成Spring/Spring-Boot

借助spring-boot-autoconfigure自动化配置,借助annotation(@EnableKafka)实现ContainerFactory和FactoryContainerConfigurer的单例化,继而引发kafka-client中的KafkaProducer和KafkaConsumer的实例化完成相关消息的推送和使用。

连接方式使用NIO的sendfile方式实现内存零复制

自定义Selector, channel的创建,基于配置进行连接,以及消息发送的统筹调度

4.x 架构特性:

1. DefaultKafkaProducerFactory存有producer的缓存池BlockingQueue,内存内置类CloseSafeProducer的实例。值得注意的是该Producer内有指针指向该缓存池对象,做到了该Producer的释放实现是放回缓存池中。优点良好的封装特性,实现逻辑较为简单且对外暴露新建和回收方法如同一般资源,便于理解。

spring-kafka结合spring-boot快速配置进行consumer和producer的使用。

annotation: @EnableKafka,@KafkaHandler,@KafkaListener,@TopicPartition,@PartitionOffset

负责ConcurrentKafkaListenerContainerFactoryConfigurer和ConcurrentKafkaListenerContainerFactory的单例化

producer: KafkaTemplate进行写

利用KafkaProducerFactory(DefaultKafkaProducerFactory)进行KafkaProducer的注入。

consumer: MessageListener进行读取

实现方式有KafkaMessageListenerContainer和ConcurrentMessageListenerContainer

上一篇下一篇

猜你喜欢

热点阅读