专栏首页犀牛饲养员的技术笔记Kafka中几个容易混淆的概念

Kafka中几个容易混淆的概念

我刚学kafka的时候,对这几个概念有时候会混淆,尤其是配置的时候经常搞不清楚它们的区别。这篇文章打算做一个梳理。

broker-list

broker指的是kafka的服务端,可以是一个服务器也可以是一个集群。producer和consumer都相当于这个服务端的客户端。

broker-list指定集群中的一个或者多个服务器,一般我们再使用console producer的时候,这个参数是必备参数,另外一个必备的参数是topic,如下示例:

C:\kafka\kafka_2.12-1.1.1
λ .\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test20190713
>this is a test
>

本地主机如果要模拟多个broker,方法是复制多个server.properties,然后修改里面的端口, broker.id等配置模拟多个broker集群。

比如模拟三个broker的情况,首先把config 目录下的 server.properties 复制两份,分别命名为 server-1.properties 和 server-2.properties,然后修改这两个文件的下列属性,

server-1.properties:

broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=C:/kafka/broker1

server-2.properties:

broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=C:/kafka/broker2

broker.id 用来唯一标识每一个 broker,每个broker都有一个唯一的id值用来区分彼此。Kafka在启动时会在zookeeper中/brokers/ids路径下创建一个与当前broker的id为名称的虚节点,Kafka的健康状态检查就依赖于此节点。

我们可以打开一个zk的客户端,通过ls命令来查看下这个路径下的内容:

λ .\bin\windows\zookeeper-shell.bat localhost:2181
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is disabled
ls
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

ls /brokers/ids
[0]

可以看到我们默认启动的这个broker.id为0的节点。

bootstrap-servers vs zookeeper

bootstrap-servers指的是目标集群的服务器地址,这个和broker-list功能是一样的,只不过我们在console producer要求用后者。

以前我们使用console consumer测试消息收发时会这样写:

C:\kafka\kafka_2.12-1.1.1
λ .\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test20190713
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

这样可以接收到生产者控制台发送的消息。

现在我们也可以这样写,

C:\kafka\kafka_2.12-1.1.1 λ .\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test20190713

你可以自己测试下,也是可以收到消息的。

前者是老版本的用法,0.8以前的kafka,消费的进度(offset)是写在zk中的,所以consumer需要知道zk的地址。后来的版本都统一由broker管理,所以就用bootstrap-server了。

在这里插入图片描述这里插入图片描述

bootstrap-server还可以自动发现其它的broker。

本文分享自微信公众号 - 犀牛饲养员的技术笔记(coder_start_up),作者:siwuxie18

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • kafka系列之彻底弄清楚各版本差异

    我自己用了 kafka 也挺久的了,关于kafka的版本规则,各个大版本的升级究竟做了哪些优化等,并没有特别的关注。

    用户7634691
  • 几个小细节帮你提升java代码运行效率

    千万不要小看代码细节的优化,有时候一个很小的优化就要你的代码执行效率数倍提升,如果这个优化点调用比较频繁,甚至有可能解决你整个系统的性能瓶颈。

    用户7634691
  • 如何打印GC日志排查问题

    这种时候,有经验的工程师应该能马上怀疑是GC的问题,我们可以通过在运行时添加JVM参数来打印程序运行时的GC情况。

    用户7634691
  • python面向对象

    面向对象(Object Oriented,OO)其是以对象模型为基础进行的抽象过程,并在应用过程中形成了描述自己的抽象概念定义,包括对象、类、封装、继承以及多...

    老雷PHP全栈开发
  • MySQL中为什么我给临时表分组后Max函数就无效了?

    有道练习题“取得平均薪水最高的部门的部门编号(至少给出两种解决方案)”,我使用max函数进行获取,没问题,但还需要获取DEPTNO,需要获取DEPTNO就必须分...

    用户2788045
  • 热力图 : 位置大数据服务的可视化窗口

    热力图(Heat Map),是一种简单但非常直观的信息展示方式,TStack 平台里的一个重要的应用服务。最早是在1991年由软件设计师 Cormac Kinn...

    腾讯云TStack
  • RocketMQ系列(四)顺序消费

    折腾了好长时间才写这篇文章,顺序消费,看上去挺好理解的,就是消费的时候按照队列中的顺序一个一个消费;而并发消费,则是消费者同时从队列中取消息,同时消费,没有先后...

    小忽悠
  • RocketMQ系列(四)顺序消费

    折腾了好长时间才写这篇文章,顺序消费,看上去挺好理解的,就是消费的时候按照队列中的顺序一个一个消费;而并发消费,则是消费者同时从队列中取消息,同时消费,没有先后...

    小忽悠
  • 常见Web源码泄露总结

    ? .hg源码泄漏 漏洞成因: hg init的时候会生成.hg e.g.http://www.example.com/.hg/ 漏洞利用: 工具:dvc...

    用户1467662
  • 数据可视化:浅谈热力图如何在前端实现

    当我们需要用更直观有效的形式来展现各类大数据信息时,热力图无疑是一种很好的方式。作为一种密度图,热力图一般使用具备显著颜色差异的方式来呈现数据效果,热力图中亮色...

    个推君

扫码关注云+社区

领取腾讯云代金券