Elt*_*ooo 1 high-availability resolve flume apache-kafka spark-streaming
我有一个由5个经纪人组成的Kafka集群,并且我正在使用Consul Service Discovery将其IP放入dns记录中。
kafka.service.domain.cc A 1.1.1.1 2.2.2.2 ... 5.5.5.5
Run Code Online (Sandbox Code Playgroud)
是否建议仅使用一个域名:kafka.bootstrap.servers = kafka.service.domain.cc:30000
还是拥有多个域名(至少2个)更好,每个域名都解析为一个经纪人
kafka1.service.domain.cc A 1.1.1.1
kafka2.service.domain.cc A 2.2.2.2
Run Code Online (Sandbox Code Playgroud)
然后在kafka中使用它们
kafka.bootstrap.servers = kafka1.service.domain.cc:30000,kafka2.service.domain.cc:30000
Run Code Online (Sandbox Code Playgroud)
我对第一种方法的担心是,域名将仅被随机代理解析一次,如果该代理关闭,则不会进行新的DNS解析。
从精通Apache Kafka的书中:
bootstrap.servers
是主机和端口对的逗号分隔列表,它们是“引导” Kafka群集中的Kafka代理的地址,Kafka客户端最初连接到该地址以进行自我引导。
bootstrap.servers
提供初始主机,这些初始主机充当Kafka客户端发现集群中全套活动服务器的起点。由于这些服务器仅用于初始连接以发现完整的群集成员身份(它可能会动态更改),因此此列表不必包含完整的服务器集(不过,如果服务器是一台,则可能需要多个服务器)。下)。客户端(生产者或消费者)使用所有服务器,而与bootstrap.servers中指定用于引导的服务器无关。
因此,由于该属性bootstrap.servers
提供了初始主机,这些主机充当Kafka客户端发现集群中全套活动服务器的起点,因此我认为两种方法都可以。但是因为他们将属性的值保留为逗号分隔的列表,所以我认为第二种方法将是推荐的方法。而且方法1中的一个问题是,在引导过程中,随机代理可能会关闭,并且客户端将无法继续获取群集信息。因此,如果一个代理在引导过程中关闭,则最好提供多个作为后备。
归档时间: |
|
查看次数: |
1794 次 |
最近记录: |