-broker list选项和--bootstrap server选项进行了说明

ryevplcw  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(485)

在kafka console producer中,--broker列表包含服务器列表。制作人和他们都有联系吗(或者)生产商是否使用服务器列表连接其中一个服务器,如果该服务器出现故障,则切换到下一个服务器,以此类推?
类似地,在kafka控制台中--bootstrap服务器获取kafka服务器的列表。如果有两个kafka服务器,是否需要在--bootstrap服务器中同时指定它们?我试着用一台服务器(kafka-server1)运行消费者,当我停止kafka-server1时,它继续接收主题的数据。

qaxu7uf2

qaxu7uf21#

他们俩的行为是一样的。
如果你看Kafka的源代码,你会发现这两个选项导致相同的结果 "bootstrap.servers" 配置属性

def producerProps(config: ProducerConfig): Properties = {
    val props =
      if (config.options.has(config.producerConfigOpt))
        Utils.loadProps(config.options.valueOf(config.producerConfigOpt))
      else new Properties

    props ++= config.extraProducerProps

    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, config.brokerList) // <---- brokerList is passed as BOOTSTRAP_SERVER

使用者和生产者都将以循环方式连接到提供的地址列表,以创建到kafka控制器的初始“boostrap”连接,kafka控制器知道在给定时间集群中所有可用的代理。对于高可用性,最好至少给出3个。
如果有两个kafka服务器,是否需要在--bootstrap服务器中同时指定它们?
关于有多个可用地址可供使用,在云环境中,您可能在可用性区域上有代理,建议每个可用性区域至少列出2个代理,因此3个区域总共有6个代理。
可以使用负载均衡器/反向代理将为客户端提供的地址简化为单个 kafka.your.network:9092 地址,但是为了拥有一个单独的、众所周知的地址,你引入了额外的dns和网络跳数来确定连接。
在任何情况下,代理的所有可用地址都将交给客户端,然后在本地缓存。
但是,重要的是要认识到,所有发送/轮询请求都只与主题分区的单个前导进行通信,而不管您提供了多少地址以及一个主题将有多少副本。

相关问题