【问题标题】:Is it recommended to use multiple URLs in schema.registry.url?是否建议在 schema.registry.url 中使用多个 URL?
【发布时间】:2019-05-06 23:24:57
【问题描述】:

https://docs.confluent.io/current/schema-registry/index.html 此处的文档提到了使用单个 URL 的可能性,这意味着也可以使用多个 URL,以逗号分隔,但是,问题是推荐什么以及为什么,使用 F5 之类的东西,或者简单地使用逗号-分开的网址?

我用 kafka-avro-console-producer 和 kafka-avro-console-consumer 测试了逗号分隔的 URL,虽然后者总是按预期运行,但前者有时会返回(打印到控制台)>>ERROR Failed当其中一个 URL 错误时,将 HTTP 请求发送到端点https://github.com/confluentinc/confluent-kafka-dotnet/issues/711

我们会使用 3 个 URL 作为配置参数值,你怎么看?

我们使用Java客户端,代码如下:

final Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka1:9092,kafka2:9092,kafka3:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://kafka1:8081,http://kafka2:8081,http://kafka3:8081");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class);
props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true); 

所以,假设我们有 3 个 kafka 代理服务器节点,kafka1、kafka2 和 kafka3,并且我们在每个节点上启动了一个模式注册表实例,我们是否应该使用类似的语法来定义 SCHEMA_REGISTRY_URL_CONFIG,就像我们在上面的例子,或者我们应该使用外部负载均衡器,例如 F5 或循环 DNS,并让它提供一个解析为 kafka1、kafka2 和 kafka3 的 ipaddr/别名(如下面示例中的 schema_registry_loadbalanced)?这将在应用程序代码中使用,如下所示:

props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://schema_registry_loadbalanced:8081");

对于 kafka 连接,我们认为外部负载均衡器不会提供太多好处,但对于模式注册表我们不确定。

【问题讨论】:

    标签: apache-kafka confluent-schema-registry


    【解决方案1】:

    这取决于您的客户端,但至少 Java 属性设置为采用 URL 列表形式的配置类型。

    在我工作的地方,注册表是一个负载平衡器,所以无论如何它都是一个 URL。

    【讨论】:

    • 谢谢和抱歉,但我不太明白你所说的你是如何使用它的,直接在 schema.registry.url 中的多个 url,或者通过外部方式提供的一个 url,这就是我添加的原因问题的一些细节来解释我们的想法是什么这里有哪些选项。
    • 多个 URL 是源代码中的预期设计。把它放在负载均衡器后面没有错。
    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 2023-03-13
    • 2022-10-02
    • 1970-01-01
    • 2010-11-08
    • 2018-01-19
    • 2011-09-01
    • 2010-10-30
    相关资源
    最近更新 更多