kafka

作者: Jackie_4f4d | 来源:发表于2021-07-28 13:35 被阅读0次

    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

    相关文章

      网友评论

          本文标题:kafka

          本文链接:https://www.haomeiwen.com/subject/cgbiyhtx.html