2.0 kafka知识点!

参考 https://blog.csdn.net/yuan_xw/article/details/51210954

  Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,使用Scala语言编写,之后成为Apache项目的一部分。   1.Kafka 模式简介: Kafka 将消息以 topic 为单位进行归纳 将向 Kafka topic 发布消息的程序成为 producers. 将预订 topics 并消费消息的程序成为 consumer. Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker. producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息   Kafka术语介绍 1、消息生产者:即:Producer,是消息的产生的源头,负责生成消息并发送到Kafka服务器上。 2、消息消费者:即:Consumer,是消息的使用方,负责消费Kafka服务器上的消息。 3、主题:即:Topic,由用户定义并配置在Kafka服务器,用于建立生产者和消息者之间的订阅关系:生产者发送消息到指定的Topic下,消息者从这个Topic下消费消息。 4、消息分区:即:Partition,一个Topic下面会分为很多分区, 例如:“kafka-test”这个Topic下可以分为6个分区,分别由两台服务器提供,那么通常可以配置为让每台服务器提供3个分区,假如服务器ID分别为0、1,则所有的分区为0-0、0-1、0-2和1-0、1-1、1-2。   注:Partition是Topic物理上的分组,一个 topic可以分为多个 partition,每个 partition 是一个有序的队列。partition中的每条消息都会被分配一个有序的 id(offset)。   5、Broker:即Kafka的服务器,用户存储消息,Kafa集群中的一台或多台服务器统称为 broker。   6.消费者分组:Group,用于归组同类消费者,在Kafka中,多个消费者可以共同消费一个Topic下的消息,每个消费者消费其中的部分消息,这些消费者就组成了一个分组,拥有同一个分组名称,通常也被称为消费者集群。   7、Offset:消息存储在Kafka的Broker上,消费者拉取消息数据的过程中需要知道消息在文件中的偏移量,这个偏移量就是所谓的Offset。   Kafka中Broker详解 1、Broker:即Kafka的服务器,用户存储消息,Kafa集群中的一台或多台服务器统称为 broker。   2、Message在Broker中通过Log追加的方式进行持久化存储。并进行分区(patitions)。   3、为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘,这样减少了磁盘IO调用的次数。   4、Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。Message消息是有多份的。   5、Broker不保存订阅者的状态,由订阅者自己保存。   6、无状态导致消息的删除成为难题(可能删除的消息正在被订阅),kafka采用基于时间的SLA(服务水平保证),消息保存一定时间(通常为7天)后会被删除。   7、消息订阅者可以rewind back到任意位置重新进行消费,当订阅者故障时,可以选择最小的offset(id)进行重新读取消费消息。   Kafka的Message组成 1、Message消息:是通信的基本单位,每个 producer 可以向一个 topic(主题)发布一些消息。   2、Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一条或多条Message。   3、partition中的每条Message包含了以下三个属性:   offset 即:消息唯一标识:对应类型:long MessageSize 对应类型:int32 data 是message的具体内容。     Kafka的Partitions分区 1、Kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存。   2、可以将一个topic切分多任意多个partitions,来消息保存/消费的效率。   3、越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力。   Kafka的Consumers 1、消息和数据消费者,订阅 topics并处理其发布的消息的过程叫做 consumers。   2、在 kafka中,我们可以认为一个group是一个“订阅者”,一个Topic中的每个partions,只会被一个“订阅者”中的一个consumer消费,不过一个 consumer可以消费多个partitions中的消息(消费者数据小于Partions的数量时)。   注意:kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。   3、一个partition中的消息只会被group中的一个consumer消息。每个group中consumer消息消费互相独立。   Kafka的持久化 1、一个Topic可以认为是一类消息,每个topic将被分成多partition(区),每个partition在存储层面是append log文件。 任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),partition是以文件的形式存储在文件系统中。   2、Logs文件根据broker中的配置要求,保留一定时间后删除来释放磁盘空间。   zookeeper在kafka中的作用!https://www.jianshu.com/p/a036405f989c      
上一篇:flink从指定的时间戳开始消费


下一篇:java~并行计算~大集合的并行处理