Kafka入门-认知+配置优化

1.kafka整体概念
不仅仅是一个消息中间件, 可以看作是一个流平台、可以订阅发布数据流,并且把数据保存起来进行处理。是一个分布式的以集群形式运行的中间件。kafka的低延时所以被用来作为核心的业务应用上。消息天生持久化:数据存储平台,流平台。主要用在数据的流处理上,所以因为他的低延时被主要用在核心的业务应用上。
1.1kafka内部相关的概念
1)消息:可以包括键的一个字节数组
批次:为了提高效率,消息是被分批次写入broke的(同一个主题中消息),消息也是可以被压缩。
主题:个人理解是和topick关联的,一个topick对应一个主题。
分区:一个主题可以被分为许多分区,每个分区内的消息是以追加的形式加入到消息中的。所以单个分区内的消息肯定是顺序 的。分区的个数是自定义的,broke接受到消息后就可以根据内部的分区器来对消息进行映射(主要是用来实现数据的冗余和伸缩性)
生产者:生产者默认情况下把消息均衡分布到主题的所有分区上,如果需要指定分区,则需要使用消息里的消息键和分区器。
消费者:消费者订阅主题,一个或者多个,并且按照消息的生成顺序读取。消费者通过检查所谓的偏移量来区分消息是否读取过。
偏移量:移量是一种元数据,一个不断递增的整数值,创建消息的时候,Kafka会把他加入消息。在一个分区里,每个消息的偏移量是唯一的。每个分区最后读取的消息偏移量会保存到Zookee
消费者群组:groupID。一个主题可以被多个消费者群组消费

消费者群组和partition之间的关系:一个分区只可以被一个消费者群组里面一个consumer消费,一个消费者群组里的consumer可以消费多个分区。个人理解这样的优点:可以保证一个消费者群组内的消费者对消息的无重复消费,提高consumer消费的效率。

在这里有个疑问:偏移量一个分区只有一个,但是如果不同的消费者群组里面的consumer消费同一个分区的话,难道使用的是偏移量是一个吗?

broke和集群

2.kafka相关文件的配置
配置文件放在Kafka目录下的config目录中,主要是server.properties文件
broker.id
在单机时无需修改,但在集群下部署时往往需要修改。它是个每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况
zookeeper.connect
zookeeper集群的地址,可以是多个,多个之间用逗号分割
log.dirs
Kafka把所有的消息都保存在磁盘上,存放这些数据的目录通过log.dirs指定。可以指定多个,充分利用磁盘的并行读写能力

num.recovery.threads.per.data.dir
每数据目录用于日志恢复启动和关闭时的线程数量。因为这些线程只是服务器启动和关闭时会用到。所以完全可以设置大量的线程来达到并行操作的目的。注意,这个参数指的是每个日志目录的线程数,比如本参数设置为8,而log.dirs设置为了三个路径,则总共会启动24个线程。
auto.create.topics.enable
是否允许自动创建主题。如果设为true,那么produce,consume或者fetch metadata一个不存在的主题时,就会自动创建。缺省为true。
主题配置(topic配置)
num.partitions
每个新建主题的分区个数。这个参数一般要评估,比如,每秒钟要写入和读取1GB数据,如果现在每个消费者每秒钟可以处理50MB的数据,那么需要20个分区,这样就可以让20个消费者同时读取这些分区,从而达到设计目标。
log.retention.hours
日志保存时间,默认为7天(168小时)。超过这个时间会清理数据。bytes和minutes无论哪个先达到都会触发。与此类似还有log.retention.minutes和log.retention.ms,都设置的话,优先使用具有最小值的那个。
log.retention.bytes
topic每个分区的最大文件大小,一个topic的大小限制 = 分区数*log.retention.bytes。-1没有大小限制。log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除。
log.segment.bytes
分区的日志存放在某个目录下诸多文件中,这些文件将分区的日志切分成一段一段的,我们称为日志片段。这个属性就是每个文件的最大尺寸;当尺寸达到这个数值时,就会关闭当前文件,并创建新文件。被关闭的文件就开始等待过期。默认为1G。
如果一个主题每天只接受100MB的消息,那么根据默认设置,需要10天才能填满一个文件。而且因为日志片段在关闭之前,消息是不会过期的,所以如果log.retention.hours保持默认值的话,那么这个日志片段需要17天才过期。因为关闭日志片段需要10天,等待过期又需要7天。
log.segment.ms
作用和log.segment.bytes类似,只不过判断依据是时间。同样的,两个参数,以先到的为准。这个参数默认是不开启的。
message.max.bytes
表示一个服务器能够接收处理的消息的最大字节数,注意这个值producer和consumer必须设置一致,且不要大于fetch.message.max.bytes属性的值。该值默认是1000000字节,大概900KB~1MB。
3.硬件配置对Kafka性能的影响
磁盘吞吐量/磁盘容量
磁盘吞吐量会影响生产者的性能。因为生产者的消息必须被提交到服务器保存,大多数的客户端都会一直等待,直到至少有一个服务器确认消息已经成功提交为止。也就是说,磁盘写入速度越快,生成消息的延迟就越低。
磁盘容量的大小,则主要看需要保存的消息数量。如果每天收到1TB的数据,并保留7天,那么磁盘就需要7TB的数据。
内存
Kafka本身并不需要太大内存,内存则主要是影响消费者性能。在大多数业务情况下,消费者消费的数据一般会从内存中获取,这比在磁盘上读取肯定要快的多。
网络
网络吞吐量决定了Kafka能够处理的最大数据流量。
CPU
Kafka对cpu的要求不高,主要是用在对消息解压和压缩上。所以cpu的性能不是在使用Kafka的首要考虑因素。
4.为何需要Kafka集群
1.负载均衡:同一个主题的不同分区可以处在不同的broke中,生产者和消费者对当前主题进行操作可以落在不通的服务器上,减少服务器压力
2.容灾性。分区之间会发生复制功能,提供数据冗余,当某一集群挂掉后,会选出新的首领,再次把流量拉取到新的首领broke上即可。
3.性能提升,由于磁盘I/O或者内存等导致性能问题,可以通过添加机器来实现提升性能。
5.如何估算Kafka集群中Broker的数量
需要多少磁盘空间保留数据,和每个broker上有多少空间可以用。比如,如果一个集群有10TB的数据需要保留,而每个broker可以存储2TB,那么至少需要5个broker。如果启用了数据复制,则还需要一倍的空间,那么这个集群需要10个broker。
6.Broker如何加入Kafka集群
非常简单,只需要两个参数。第一,配置zookeeper.connect,第二,为新增的broker设置一个集群内的唯一性id。

    画一个自己对kafka的理解图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置kafka节点,请按照以下步骤进行操作: 1. 首先,确保你已经安装了kafka-eagle。你可以从官方网站http://www.kafka-eagle.org/下载最新版本的kafka-eagle-web-3.0.1 。 2. 打开kafka-eagle的配置文件,通常是kafka-eagle.properties。 3. 在配置文件中,找到kafka-eagle.metadata.broker.list参数,这个参数用来指定kafka集群的broker节点列表。将这个参数的值修改为你的kafka集群中的broker节点的地址和端口。多个节点之间可以用逗号进行分隔。 4. 如果你的kafka集群启用了身份验证机制,你还需要配置kafka-eagle.metadata.sasl.username和kafka-eagle.metadata.sasl.password参数,分别填入你的用户名和密码。 5. 保存配置文件并重启kafka-eagle服务。 现在,你已经成功配置kafka-eagle与kafka节点的连接。你可以使用kafka-eagle来监视kafka集群的状态、topic信息、IO、内存、consumer线程、偏移量等信息,并通过可视化图表展示。此外,你还可以使用kafka-eagle的KQL功能,通过SQL在线查询kafka中的数据 。 注意:如果你使用的是kafka自带的控制台生产者kafka-console-producer.sh ,请确保在配置kafka-eagle时正确填写了kafka集群的broker节点信息,以便kafka-eagle能够正确地与kafka集群进行通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Kafka-Eagle 2.0.5安装](https://blog.csdn.net/qq_45360515/article/details/128041972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [kafka安装部署+kafka-eagle+集成SpringBoot](https://blog.csdn.net/qq_57697356/article/details/130082807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值