Kafka数据中转传输的示例分析

94次阅读
没有评论

共计 1167 个字符,预计需要花费 3 分钟才能阅读完成。

今天就跟大家聊聊有关 Kafka 数据中转传输的示例分析,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

需求起源

由于某些海外节点的数据发送到 Kafka 的上海集群会产生较高的延迟, 因为公网访问的时候数据可能会进行多次中转, 而导致网络延迟较高。所以增加了一个地区中转,该地区的网络情况到所有的节点的网络情况较好 (厂商推荐)。

所以想把数据通过该地区做一次中转,再发送到上海。这样来看整体时延约 120ms+。所以在 Kafka 的 producer 直接把 host 配置为该中转节点。经过测试,发现数据能够到上海。

设想的数据流程

出现异常,延迟依然很高

通过几天的观察,发现峰值时刻的异常依然很高,而当时地区节点之间的网络情况还不错。其他地区到中转地区节点的时延约 90ms+,中转地区到上海节点的时延约 30ms+。修改了 ping 数据包的大小, 数量。发现丢包率, 时延等一切都很正常。Kafka 数据依然延迟。

网络原因基本排除。那么就是其他的原因。

Kafka 压力测试

后来在某地区节点购买了一台服务器,使用  kafka-producer-perf-test 进行压力测试,直接出现大量的 timeout。网络情况非常不好。

但是 ping 的结果还好啊 …

查看程序日志

查看进程发送的日志,从日志上发现一个问题。由于我使用了 nginx 进行转发,所以我数据发送到 nginx 的端口修改成了 9000,也就是 producer 配置的是 nginx 的 host:9000,但是我发现我日志上出现的依然是发送至 kafka 的端口:9092。
进程没有重启?应该所有人的第一反应就是这个,所以重启进行咯 …
重启进程,盯日志 …

发现请求发送到 nginx 的 9000 端口.. 这次应该是对了 …

紧接着出来建立链接  kafka1:9092,kafka2:9092,kafka3:9092

一脸懵逼, 重启依然是这样 … 盯了一下 nginx 服务器的网络,最近几天的带宽太低了 …

查找原因

基于以上问题, 基本可以判断。producer 发送的数据绝对没有通过 nginx。查询相关文档发现。

Kafka 无法把数据通过 nginx 代理方式进行传输,而通过 nginx 的只有首次连接。producer 节点通过 nginx 获取到 kafka 的 metadata 信息。然后通过 metadata 里面的 IP 进行访问 …

也就是说实际通过 nginx 的方式是这样的, 首次发送只是通过 nginx 获取到 metadata 的信息,metadata 包含 kafka 的 broker 各 ip 地址。然后 producer 则会直接把数据发送到 kafka 集群。

看完上述内容,你们对 Kafka 数据中转传输的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1167字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)