ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2.0 kafka知识点!

2021-09-14 19:04:41  阅读:131  来源: 互联网

标签:知识点 partition Kafka topic 消息 kafka Topic 2.0 consumer


参考 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      

标签:知识点,partition,Kafka,topic,消息,kafka,Topic,2.0,consumer
来源: https://www.cnblogs.com/zl-programmer/p/15269070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有