Kafka
2021-04-12 10:42:08 0 举报
AI智能生成
kakfa
作者其他创作
大纲/内容
基础知识
背景
消息系统
消息系统分类
点对点
采用队列方式,消费一条数据删除一条
发布-订阅
发布者
将消息主动推送到消息系统
主题
一个消息的分类
订阅者
采用拉或推的方式从消息系统获取数据
应用场景
应用解耦
将项目各模块的消息统一处理和存储
流量控制
秒杀系统,在应用前端加入消息队列控制访问流量
日志处理
接收、存储、传输日志数据
消息通讯
消息队列内置高效的通信机制,可以用在单纯的消息通讯
发展历史
linkedin开发
scala语言编写
介绍
kafka是一个分布式发布-订阅消息系统,构建在zookeeper同步服务之上
特点
高并发:支持数千个客户端同时读写;
可扩展性:kafka集群支持热扩展;
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
容错性:允许集群中节点故障(若副本数量为n,则允许n-1个节点故障);
支持语言
java、python、c++、php等
其它消息队列
RabbitMQ
Redis
ZeroMQ
ActiveMQ
Redis
ZeroMQ
ActiveMQ
核心API
生产者API
允许应用程序发布记录流至一个或者多个kafka的主题(topics)。
消费者API
允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流。
StreamsAPI
允许应用程序充当流处理器(stream processor),从一个或者多个主题获取输入流,并生产一个输出流到一个或 者多个主题,能够有效的变化输入流为输出流。
ConnectorAPI
可以使用这些connector进行关系数据库或HDFS等常用系统到Kafka的数据传输,也是用来构建ETL的一种方案
Kafka术语
Broker
kafka集群中包含一个或者多个服务实例,这种服务实例被称为Broker(服务器)
Topic
消息根据Topic进行归类
Partition
Partition是一个物理上的概念,每个Topic包含一个或者多个Partition.每个分区的offset从0开始
Producer
负责发布消息到kafka的Broker中。
Consumer
消息消费者,向kafka的broker中读取消息的客户端
Consumer Group
每一个Consumer属于一个特定的Consumer Group
分区数越多,同一时间可以有越多的消费者来进行消费,消费数据的速度就会越快,提高消费的性能
其它
kafka副本:kafka Partition Replicas
副本数(replication-factor):控制消息保存在几个broker(服务器)上,
一般情况下等于broker的个数,不能多于broker数量
一般情况下等于broker的个数,不能多于broker数量
副本因子是包含本身|同一个副本因子不能放在同一个Broker中。
副本作用:让kafka读取数据和写入数据时的可靠性
kafka偏移量:offset
offset是一个long类型数字
应用场景
日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer;
消息系统:解耦生产者和消费者、缓存消息等;
用户活动跟踪:kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后消费者通过订阅这些topic来做实时的监控分析,亦可保存到数据库;
运营指标分析:kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告;
流式处理:比如spark streaming,flink和storm读取kafka数据,进行流计算
集群操作
启动/停止
后台启动:nohup bin/kafka-server-start.sh config/server.properties 2>&1 &
停止命令:bin/kafka-server-stop.sh
创建一个Topic
bin/kafka-topics.sh --create --zookeeper node01:2181 --replication-factor 2 -- partitions 3 --topic test
查看主题命令
bin/kafka-topics.sh --list --zookeeper node01:2181,node02:2181,node03:2181
生产者生产数据
bin/kafka-console-producer.sh --broker-list node01:9092,node02:9092,node03:9092 --topic test
消费者消费数据
bin/ kafka-console-consumer.sh --from-beginning --topic test --zookeeper node01:2181,node02:2181,node03:2181
运行describe查看topic的相关信息
bin/kafka-topics.sh --describe --zookeeper node01:2181 --topic test
增加topic分区数
bin/kafka-topics.sh --zookeeper zkhost:port --alter --topic topicName --partitions 8
动态修改kakfa的配置
#任意kafka服务器执行以下命令可以增加topic分区数
bin/kafka-topics.sh --zookeeper node01:2181 --alter --topic test --config flush.messages=1
bin/kafka-topics.sh --zookeeper node01:2181 --alter --topic test --config flush.messages=1
动态删除kafka集群配置
bin/kafka-topics.sh --zookeeper node01:2181 --alter --topic test --delete-config flush.messages
删除topic
#默认情况下知识打上一个删除的标记,在重新启动kafka后才删除。
#如果需要立即删除,则在server.properties中配置delete.topic.enable=true
kafka-topics.sh --zookeeper zkhost:port --delete --topic topicName
#如果需要立即删除,则在server.properties中配置delete.topic.enable=true
kafka-topics.sh --zookeeper zkhost:port --delete --topic topicName
kafka架构
官方文档架构图
整体架构图
运行流程
优化
0 条评论
下一页