初识Kafka

Kafka最早是由LinkedIn公司开发的,作为其自身业务消息处理的基础,后LinkedIn公司将Kafka捐赠给Apache,现在已经成为Apache的一个顶级项目了,Kafka作为一个高吞吐的分布式的消息系统,目前已经被很多公司应用在实际的业务中了,并且与许多数据处理框架相结合,比如Hadoop,Spark等。Kafka 使用 Avro 作为消息序列化框架

概念:

  1.什么是事件流(Steam Event)

    它是无边界数据集的抽象说法,无边界意味着无限且不断增长,因为随着时间的推移,新数据会不断地到来。最基本的数据流模型,每个节点处理完数据会将数据转发给下游节点。其余特点:数据流是有序的;数据记录是不可变;可重播。

  2.什么是流式处理

    持续的从一个无边界的数据集读取数据,然后对它们进行处理并生成结果;是一种编程范式,就像请求和响应范式;请求和响应(延迟最小);批处理(高延迟和高吞吐量);

  3.消息、批次、主题、分区

    Kafka的数据单元被称为消息,消息可以看作是数据库内的一个记录,消息由字节组成,消息可以有一个可选的元数据(键),键也是一个字节数组,消息以一种可控的方式写入不同的分区时,会用到键;批次表示为一组消息,这些消息属于同一个分区或者主题,同一批次内的数据可以进行压缩以此来提高对应的效率。

    主题=数据库中的表,一个主题可以被拆分成任意个分区,因此在无法在整个主题内保证数据的顺序性,分区可以认为是一种数据的冗余。分区也就是一个提交日志。一个主题可以多个服务器组成。

  

 

 

   4.生产者和消费者

    生产者创建消息,消息会被发布到一个特定的主题上,生产者在默认情况下把消息均衡地分布到主题的所有分区上。不会关心被特定写入到哪个分区上,不过也可以指定写入特定的分区上。通过消息键和分区器来进行实现,分区器会生成一个散列值,并将其映射到特定的分区上。这个可以保证同一个键的会被写入到同一个分区上。

    消费者读取信息,通过订阅主题来获取分区内的消息,会去检查消息的偏移量来区分已经读取到的数据。会把读取到的分区偏移量存储在kafka或者zookeeper中去。消费者是消费群组的中的一部分,一个分区在同一时间只能保证被一个消费者使用。

 

posted @ 2021-07-25 19:44  smartcat994  阅读(43)  评论(0编辑  收藏  举报