博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家
Java知识图谱点击链接:体系化学习Java(Java面试专题)
感兴趣的同学可以收藏关注下 ,不然下次找不到哟
Kafka 是一种高性能、分布式的消息系统,具有以下特性:
高吞吐量:Kafka 可以处理大规模的消息流,并具有很高的吞吐量。它能够支持每秒数百万条消息的读写操作。
可扩展性:Kafka 的设计允许用户在集群中添加或删除节点,以满足不断增长的消息流量需求。它可以水平扩展,以适应更大规模的数据处理。
持久性:Kafka 将消息持久化到磁盘上,确保消息的持久性和可靠性。即使消费者离线,也可以通过重新读取存储的消息来进行消费。
分布式:Kafka 是一个分布式系统,它将消息分布在多个节点上,实现了高可用性和容错性。它使用分布式存储和复制机制来确保数据的可靠性。
多样的数据流处理:Kafka 不仅仅是一个消息队列,还具备了流处理的能力。它支持实时流处理、批处理和交互式查询等多种数据处理场景。
可靠性:Kafka 提供了副本机制,确保消息在集群中的冗余存储和故障恢复。它具有高可靠性,即使在节点故障的情况下,也能保证消息的可用性。
可定制性:Kafka 提供了可定制的消息保留策略、分区策略和一致性保证等功能,可以根据不同的需求进行配置和调整。
总之,Kafka 是一个高性能、可扩展、持久化、分布式的消息系统,适用于处理大规模的实时数据流和构建实时数据处理应用。
Kafka 之所以能够实现高吞吐量,主要归功于以下几个方面的设计和特性:
分区机制:Kafka 将每个主题的消息分为多个分区,并将这些分区分布在不同的节点上。这样可以实现消息的并行处理和读写操作。每个分区都可以独立地进行读写,从而提高了吞吐量。
批量发送:Kafka 允许生产者将消息进行批量发送,而不是一条一条地发送。批量发送可以减少网络开销和系统调用的次数,从而提高了生产者的吞吐量。
零拷贝技术:Kafka 使用零拷贝技术来提高数据传输的效率。它通过直接操作内核缓冲区,避免了数据在用户空间和内核空间之间的拷贝,从而减少了数据传输的开销。
内存和磁盘结合:Kafka 将消息同时存储在内存和磁盘上。消息首先写入内存中的消息缓冲区,然后定期将缓冲区中的消息批量写入磁盘。这种内存和磁盘结合的方式,既保证了高吞吐量,又保证了消息的持久性。
集群架构:Kafka 可以通过添加更多的节点来扩展集群,从而实现分布式的消息处理。多个节点之间可以并行地处理消息,从而提高了整个系统的吞吐量。
综上所述,Kafka 通过分区机制、批量发送、零拷贝技术、内存和磁盘结合以及集群架构等设计和特性,实现了高吞吐量的消息处理能力。
测试命令:
4c 8g 2块独立磁盘(高性能云硬盘)
压测的命令:
./kafka-producer-perf-test.sh --topic aiocloud_test --num-records 50000000 --throughput -1 --payload-file ./record --payload-delimiter secsmart --producer-props bootstrap.servers=127.0.0.1:9092 acks=1 linger.ms=3 batch.size=20000 compression.type=lz4 max.request.size=26214400 buffer.memory=52428800
50000000 records sent, 272843.851464 records/sec (1314.03 MB/sec), 33.17 ms avg latency, 1273.00 ms max latency, 3 ms 50th, 182 ms 95th, 514 ms 99th, 897 ms 99.9th.
吞吐量: 272843.851464 records/sec (1314.03 MB/sec)
磁盘IO数据:
测试三组的数据:
一块盘相对两块盘,写入的吞吐量差距不大,1~2w的吞吐量,总体也有25w的吞吐量,但是写入的时间大概是两块盘的两倍。
分析下这个命令:
./kafka-producer-perf-test.sh --topic aiocloud_test --num-records 50000000 --throughput -1 --payload-file ./record --payload-delimiter secsmart --producer-props bootstrap.servers=127.0.0.1:9092 acks=1 linger.ms=3 batch.size=20000 compression.type=lz4 max.request.size=26214400 buffer.memory=52428800
本文由激流原创,首发于CSDN博客,博客主页 https://blog.csdn.net/qq_37967783?spm=1010.2135.3001.5421
喜欢的话记得点赞收藏啊
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者