kafka
kafka介绍
# 介绍
Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,
消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
# 功能
- 收发解耦
- 有效解耦生产者、消费者之间的关系。在确保同样的接口约束的前提下,允许独立扩展或修改生产者/消费者间的处理过程。
- 削峰填谷
消息队列 CKafka 版能够抵挡突增的访问压力,不会因为突发的超负荷的请求而完全崩溃,有效提升系统健壮性。
- 顺序读写
消息队列 CKafka 版能够保证一个 Partition 内消息的有序性。和大部分的消息队列一致,
消息队列 CKafka 版可以保证数据按照顺序进行处理,极大提升磁盘效率。
- 异步通信
在业务无需立即处理消息的场景下,消息队列 CKafka 版提供了消息的异步处理机制,访问量高时仅将消息放入队列中,
在访问量降低后再对消息进行处理,缓解系统压力
技术原理
Producer :消息生产者,就是向kafka broker发消息的客户端;
Consumer :消息消费者,向kafka broker取消息的客户端;
Topic :可以理解为一个队列;
Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic;
Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic;
Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序;
Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka。
安装&启动
# 安装java环境
yum install java-1.8.0-openjdk-devel -y
# kafka安装包
wget https://dlcdn.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
tar -xzf kafka_2.13-3.9.0.tgz
cd kafka_2.13-3.9.0
# 启动zookeeper
# 前台运行的命令
./bin/zookeeper-server-start.sh ./config/zookeeper.properties
# 或者后台运行
./bin/zookeeper-server-start.sh -daemon ./config/zookeeper.properties
# 启动broker
# 前台运行
./bin/kafka-server-start.sh ./config/server.properties
# 后台运行
./bin/kafka-server-start.sh -daemon ./config/server.properties
# 修改内存大小
# 服务器的配置至少2核2G,否则启动的过程会出现各种问题
./bin/zookeeper-server-start.sh
./bin/kafka-server-start.sh
将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 中的数值调整成其它大小,
eg: export KAFKA_HEAP_OPTS="-Xmx100M -Xms100M"
命令
broker 端口号:9092
Zookeeper 端口号:2181
# 查看topic
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
# 创建topic,replication-factor要小于等于broker数量
./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test
# 查看某个topic信息
./bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
# 删除topic
./bin/kafka-topics.sh --delete --topic test --bootstrap-server localhost:9092
# 查看消费者组
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
# 创建消费者组, consumer_group_1 用来消费test topic
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group consumer_group_1
# 查看消费者组的偏移量(offset)值
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group consumer_group_1 --describe
# 控制消费者组使用特定的偏移量来消费消息
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --partition 0 --offset 145
# 直接开启终端,生产消息
./bin/kafka-console-producer.sh --topic test --broker-list localhost:9092
# 直接开启终端,消息消息
./bin/kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092
文档
# 安装文档
https://blog.csdn.net/weixin_39766667/article/details/130967336
https://blog.csdn.net/qq_44099500/article/details/140054876?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-0-140054876-blog-136458173.235^v43^pc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.1&utm_relevant_index=2
# 配置文件详解
https://blog.csdn.net/cold___play/article/details/132119955?ops_request_misc=&request_id=&biz_id=102&utm_term=kafka%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-132119955.nonecase&spm=1018.2226.3001.4187
https://blog.csdn.net/lixinkuan328/article/details/138807688?ops_request_misc=&request_id=&biz_id=102&utm_term=kafka%20consumer.properties%20&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-138807688.142^v100^control&spm=1018.2226.3001.4187
# 介绍
https://cloud.tencent.com/developer/article/1991788
https://blog.csdn.net/General_zy/article/details/129227041
https://cloud.tencent.com/document/product/597/10066
https://cloud.tencent.com/document/product/597/10067
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:kafka
本文作者:伟生
发布时间:2025-01-25, 18:51:10
最后更新:2025-01-27, 16:52:08
原始链接:http://yoursite.com/2025/01/25/operation_03_kafka/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。