前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka的使用场景/基本概念/初体验

Kafka的使用场景/基本概念/初体验

作者头像
Java廖志伟
发布2022-03-07 13:05:30
5470
发布2022-03-07 13:05:30
举报
文章被收录于专栏:高级开发进阶

Kafka的使用场景

\

  • 日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
  • 消息系统:解耦和生产者和消费者、缓存消息等。
  • 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  • 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

\

四、Kafka基本概念

\

\

  • Broker:消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群。
  • Topic:Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic。
  • Producer:消息生产者,向Broker发送消息的客户端。 Consumer:消息消费者,从Broker读取消息的客户端。
  • ConsumerGroup:每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不同的ConsumerGroup消费,但是一个Consumer Group中只能有一个Consumer能够消费该消息。
  • Partition:物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的。

\

五、Kafka的初体验

\

创建主题

\

创建一个名字为“test”的Topic,这个topic只有一个partition,并且备份因子也设置为1。当producer发布一个消息到某个指定的Topic,这个Topic如果不存在,就自动创建。

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-topics.sh --create --zookeeper 106.14.132.94:2181 --replication-factor 1 --partitions 1 --topic test

\

查看kafka中目前存在的topic

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-topics.sh --list --zookeeper 106.14.132.94:2181

\

列表中有一个__consumer_offsets主题,这个主题不能删除哟

\

删除主题

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-topics.sh --delete --topic test --zookeeper 106.14.132.94:2181

\

如果出现This will have no impact if delete.topic.enable is not set to true.

\

彻底删除topic: [1. ] 删除Topic,delete.topic.enable=true这里要设置为true,需要在$KAFKA/config/server.properties中配置delete.topic.enble=true [2. ] 删除log日志 [3. ] 删除ZK中的Topic记录

\

删除列表中有一个consumer_offsets主题会出现,Topic consumer_offsets is a kafka internal topic and is not allowed to be marked for deletion.

\

__consumer_offsets这个topic是由kafka自动创建的,默认49个,这个topic是不能被删除的!

\

为什么这里会是这样存储__consumer_offsets的呢?

\

代码语言:javascript
复制
[1.] 将所有 N Broker 和待分配的 i 个 Partition 排序
[2.] 将第 i 个 Partition 分配到第(i mod n)个 Broker 上

\

发送消息

\

kafka自带了一个producer命令客户端,可以从本地文件中读取内容,或者我们也可以以命令行中直接输入内容,并将这些内容以消息的形式发送到kafka集群中。在默认情况下,每一个行会被当做成一个独立的消息。首先我们要运行发布消息的脚本,然后在命令中输入要发送的消息的内容。

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-console-producer.sh --broker-list 106.14.132.94:9092 --topic test

\

this is a news this is a another news

\

消费消息

\

对于consumer,kafka同样也携带了一个命令行客户端,会将获取到内容在命令中进行输出,默认是消费最新的消息。由于我们已经发送了消息了,想要消费之前的消息可以通过--from-beginning参数指定。

\

消费之前的消息

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh --bootstrap-server 106.14.132.94:9092 --from-beginning --topic test

\

消费最新的消息

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh --bootstrap-server 106.14.132.94:9092 --topic test

\

通过不同的终端窗口来运行以上的命令,你将会看到在producer终端输入的内容,很快就会在consumer的终端窗口上显示出来。

\

消费之前多主题的消息

\

代码语言:javascript
复制
/opt/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh --bootstrap-server 106.14.132.94:9092 --from-beginning --whitelist "test|test2"

\

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kafka的使用场景
  • 四、Kafka基本概念
  • 五、Kafka的初体验
    • 创建主题
      • 查看kafka中目前存在的topic
        • 删除主题
          • 发送消息
            • 消费消息
              • 消费之前的消息
                • 消费最新的消息
                  • 消费之前多主题的消息
                  相关产品与服务
                  消息队列 TDMQ
                  消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档