`
qindongliang1922
  • 浏览: 2172313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117115
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125453
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59557
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71037
社区版块
存档分类
最新评论

关于kafka连接的一个小问题

阅读更多


最近有一个项目中用到了java api连接kafka的代码,原来测试的时候:bootstrap.servers这个值一直写的是ip,然后生产和消费数据都没有问题,但在预发测试的时候配合运维的需求,把ip要改成域名来访问,结果就启动就出问题了,启动不起来,抛出的异常如下:

DNS resolution failed for url in .......


我们的kafka的版本是apache 0.9.0.0,然后我第一时间在网上搜索看是否有相关的例子,结果没找到特别明确的问题解决办法,国内的大部分都是说需要改kafka的服务端配置文件,国外的大部分是说三个域名中,有一个域名出错导致不能连接,虽然跟我的case很像,但不是一回事,因为我确定我的三个域名都是正确的。具体可以参考这个kafka的issue:

https://issues.apache.org/jira/browse/KAFKA-2657



为了排除是环境的问题,我在自己的电脑上用虚拟机搭了一个三节点的kafka的集群,然后用域名访问,结果竟然能访问通,那就算说明域名也是没问题的,然后我对比了我自己机器上的域名和我们预发布环境的域名,发现我的预发布的域名里面包含了大写字符还有符号-和.的操作符,而我自己的域名完全是小写的英文字母加数字。然后我推测是不是加了特殊字符作为分隔符的原因,然后我分别以及联合测试了.和-组合的域名发现跟这个没关系,那最后就剩下了一种可能,域名里面包含大写字母,果然,在我测试之后发现含有大写字母的域名在kafka连接的时候截取的域名完全是错的,所以导致连接不上,故而就出现了dns解析失败的那个问题。最后把域名改成小写字母的组合后,就可以正常访问。


最后查了一下kafka的client的源码,发现用的是下面的代码方式提取域名的规则:

    private static final Pattern HOST_PORT_PATTERN = Pattern.compile(".*?\\[?([0-9a-z\\-.:]*)\\]?:([0-9]+)");

    public static String getHost(String address) {
        Matcher matcher = HOST_PORT_PATTERN.matcher(address);
        return matcher.matches() ? matcher.group(1) : null;
    }


    public static void main(String[] args) {

        System.out.println(getHost("DEV-KAFKA-03"));
        //结果是null
    }



到这里一切都清楚了,在0.9.0.0的版本是不支持大写的域名访问,最后我查了0.10.0.0的kafka的源码,发现这个bug已经修复了,所以大伙在使用的时候可以注意下这个小问题。
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
0
0
分享到:
评论

相关推荐

    kafka生产者连接池

    在分布式消息系统中,Kafka是一个广泛使用的高吞吐量、低延迟的开源消息队列。为了优化性能和提高效率,开发人员常常会利用连接池技术来管理Kafka生产者的连接。本文将深入探讨"Kafka生产者连接池"的概念、实现原理...

    kafka连接工具客户端.rar

    《Kafka连接工具客户端在Windows系统中的应用》 在大数据处理和实时流计算领域,Apache Kafka作为一款分布式消息中间件,扮演着至关重要的角色。它以其高吞吐、低延迟和容错性强的特点,被广泛应用于日志收集、数据...

    kafkatool 连接kafka工具

    在大数据处理和实时流处理领域,Apache Kafka 是一个不可或缺的组件,它作为一个分布式的消息中间件,提供高效、可扩展且可靠的发布订阅服务。为了方便管理和操作 Kafka 集群,开发者通常会使用各种工具,其中 `...

    jemter-kafka连接器

    这时,JMeter,一个开源的性能测试工具,结合其Kafka连接器,就成为了理想的解决方案。本文将详细介绍如何使用JMeter-Kafka连接器来模拟高并发数据流并将其发送到Kafka中。 首先,让我们理解JMeter的角色。JMeter是...

    seatunnel2.3.1的kafka连接器jar包

    seatunnel2.3.1的kafka连接器jar包,seatunnel2.3.1的kafka连接器jar包,seatunnel2.3.1的kafka连接器jar包,seatunnel2.3.1的kafka连接器jar包,seatunnel2.3.1的kafka连接器jar包

    kafka连接池_python版本

    kafka连接池_python版本 里面包含java的jar包 由于kafka在写入时会存在并发问题,采用连接池思想,抽取一种连接池的方式,连接池是采用Apache pool作为池管理,然后将生产者的连接点放到池中,在编译时需注意kafka...

    kafka连接flink流计算完整版

    #### 一、Kafka集群的安装与配置 **1. Kafka安装** - 使用自带版本安装Kafka,查看所在目录。 **2. 配置Kafka环境变量** - 编辑`/etc/profile`文件,添加Kafka环境变量,并执行`source /etc/profile`使配置生效...

    kafka连接数据查看工具

    kafka连接工具 kafka数据查看工具 kafka消息连接查看

    kafka 插件kafka 插件kafka 插件

    1. **安装和配置**: 根据插件文档,将插件添加到项目依赖中,配置相关的Kafka连接信息(如bootstrap servers、topic等)。 2. **编写代码**: 使用插件提供的API编写生产或消费消息的代码,处理异常和错误情况。 3. *...

    中间件kafka连接工具

    中间件kafka连接工具

    kafka-mysql-connector, Kafka 连接框架的插件,它将数据从MySQL复制到 Kafka.zip

    kafka-mysql-connector, Kafka 连接框架的插件,它将数据从MySQL复制到 Kafka Kafka MySQL连接器我在这个连接器上停止开发。 这里有可以供选择: 基于 Kafka 连接... 英镑是独立应用程序的一个独立的应用程序,它是一个

    Kafka Tool Mac版本,适用于kafka0.11及以上

    首次运行时,用户可能需要配置连接到Kafka集群的参数,如Bootstrap Servers、Zookeeper地址等。一旦设置完毕,就能开始探索和管理Kafka集群了。 **总结** Kafka Tool作为一款强大的Kafka管理工具,对于Mac用户来说...

    cpp-kafkabridge一个ApacheKafkaClientSDK

    4. **配置管理**:cpp-kafkabridge允许开发者通过配置文件或编程方式设置Kafka连接和行为参数,如 brokers 列表、超时时间、重试策略等,这样可以根据具体需求灵活调整客户端的行为。 5. **错误处理和日志**:cpp-...

    自用kafka简单测试

    9. **Kafka Connect**:Kafka Connect是一个用于数据集成的框架,可方便地将外部数据源(如数据库)与Kafka连接起来,实现数据的导入导出。 10. **Kafka Streams**:Kafka自带的流处理库,允许开发者在Kafka topic...

    offsetexplorer,kafka连接工具

    《OffsetExplorer:深入理解Kafka连接工具》 在大数据处理领域,Apache Kafka作为一个高效、可扩展的实时流处理平台,已经成为了许多企业级应用的核心组件。为了更好地管理和监控Kafka集群,开发者们创建了各种工具...

    kafka的topic小工具

    标题中的“kafka的topic小工具”指的是一个用于管理和操作Kafka主题的实用程序,它提供了用户友好的界面或命令行工具,使得在Kafka集群上执行常见的管理任务变得简单。Kafka是一个分布式流处理平台,广泛应用于...

    kettle kafka 消息者插件

    1. **配置Kafka连接**:在Kettle中,用户需要提供Kafka集群的地址(Brokers)、认证信息(如果需要的话)以及要订阅的主题名称。 2. **定义数据接收方式**:用户可以选择按照消息批次或者单个消息来接收数据。这取...

    Kafka官方中文文档.pdf

    Kafka连接器章节提供了使用指南、运行Kafka连接器的配置、转换器以及REST API。连接器API允许构建并运行可重用的生产者或消费者,实现Kafka topics与现有应用程序或数据系统的连接。 Kafka Streams章节指导如何运行...

    Sql Server Connector kafka

    这款连接器是基于Debezium项目,一个广泛使用的分布式平台,专注于提供数据库变更数据捕获和传递。 在分布式系统中,数据集成是一个关键挑战。Sql Server Connector Kafka解决了这个问题,它使得数据库变更能够无缝...

    代码:kafka数据接入到mysql中

    - 下载并安装Kafka Connect,通常包括一个分布式运行时环境(如Confluent Platform)和所需的连接器。 - 配置Connect Worker,指定连接器的配置目录、日志级别等。 2. **选择并配置Kafka到MySQL的连接器** - ...

Global site tag (gtag.js) - Google Analytics