KafKa的基本认识,写的很好的一篇博客:https://www.cnblogs.com/sujing/p/10960832.html
问题:
1、kafka是什么?
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展能力。
2、kafka的工作原理[去耦合]
Kafka采用的是订阅-发布的模式,消费者主动的去kafka集群拉取消息,与producer相同的是,消费者在拉取消息的时候也是找leader去拉取。
3、kafka存在的意义:去耦合、异步、中间件的消息系统。
Kafka:是一个高吞吐量、分布式的发布-订阅消息系统。kafka是一款开源的、轻量级的、分布式、可分区和具有复制备份[Replicated]的、基于Zookeeper协调管理的分布式流平台的功能强大的消息系统。
*Kafka Core API:*
*Kafka Extended API:*
Topic与Partition之间的关系:
代理和主题之间的关系:
Consumer group 和topic的联动方式:比如这里的topic1有3个分区,Consumer Group 0中有2个Consumer,Consumer 1 拉取分区0和分区1的数据,Consumer 2拉取分区2的数据。****
根据业务逻辑产生消息,在根据路由规则将消息发送到指定分区的Leader副本所在的Broker上。
动机:统一、实时处理大规模数据的平台。[类似数据库日志系统]
特性:消息持久化、高吞吐量、扩展性、多客户端支持、Kafka Streams、安全机制、数据备份、轻量级、消息压缩。
应用场景:
(1)消息系统。[在应用系统中可以将kafka作为传统的消息中间件,实现消息队列和消息的发布/订阅]
(2)应用监控。
(3)网站用户行为追踪。[用作日志收集中心,多个系统产生的日志统一收集到Kafka中,然后由数据分析平台进行统一处理]
(4)流处理。
(5)持久性日志。[Kafka 可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点间进行备份,Kafka为故障节点数据恢复提供了一种重新同步的机制。]
(6)kafka用作系统中的数据总线,将其接入多个子系统中,子系统会将产生的数据发送到kafka中保存,之后流转到目的系统中。
#安装curl,目的是使用官网安装docker[linux安装时提示没有该命令,按需安装]
apt install curl
#在linux[查看版本使用命令:uname -r]下安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#启动kafka开发环境
docker run --rm -it \
-p 2181:2181 -p 3030:3030 -p 8081:8081 \
-p 8082:8082 -p 8083:8083 -p 9092:9092 \
-e ADV_HOST=127.0.0.1 \
lensesio/fast-data-dev
前提是docker已安装成功:
#登录到kafka,进行kafca操作
docker run --rm -it --net=host lensesio/fast-data-dev bash
#topic对应的参数名称显示
kafka-topics
#创建first-topic
kafka-topics --zookeeper 127.0.0.1:2181 --create --topic first_topic --partitions 3 --replication-factor 1
kafka-topics --zookeeper 127.0.0.1:2181 --create --topic second_topic --partitions 3 --replication-factor 1
#列表显示对应的topic
kafka-topics --zookeeper 127.0.0.1:2181 --list
#删除topic
kafka-topics --zookeeper 127.0.0.1:2181 --delete --topic first_topic
#查看存在的topic
kafka-topics --zookeeper 127.0.0.1:2181 --describe --topic second_topic
#登录到kafka,进行kafca操作
docker run --rm -it --net=host lensesio/fast-data-dev bash
#用console producer向topic中推送数据
#producer对应的参数名称显示
kafka-console-producer
#推送数据hi、hello、today、nice、kafka
[未指定key,value随机指派给分区]
kafka-console-producer --broker-list 127.0.0.1:9092 --topic first_topic
hi
hello
[指定key,value指派给对应的分区]
kafka-console-producer --broker-list 127.0.0.1:9092 --topic first_topic --property "parse.key=true" \
--property "key.separator=:"
#登录到kafka,进行kafca操作
docker run --rm -it --net=host lensesio/fast-data-dev bash
#用console consumer向topic中拉取数据,下列命令可以列出所有需要使用的参数
kafka-console-consumer
#创建consumer,从当前位置开始读取
kafka-console-consumer --bootstrap-server 127.0.0.1:9092 --topic first_topic
#创建consumer,从起始位置开始读取,my-group-1中的一员
kafka-console-consumer --bootstrap-server 127.0.0.1:9092 --topic first_topic \
--consumer-property group.id=my-group-1 --from-beginning
#创建consumer,从起始位置开始读取
kafka-console-consumer --bootstrap-server 127.0.0.1:9092 --topic first_topic --from-beginning
手机扫一扫
移动阅读更方便
你可能感兴趣的文章