共计 1313 个字符,预计需要花费 4 分钟才能阅读完成。
如何分析数据通过中转后传输到 Kafka 集群的过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
由于当前海外的数据节点较多, 同时也较为分散, 原本海外数据直接通过公网写入到 Kafka 由于当前海外的数据节点较多, 同时也较为分散, 原本海外数据直接通过公网写入到 Kafka 集群中。但是由于海外网络进行公网传递的问题,存在非常大的延迟。导致某些业务直接无法使用。例如异常告警等。
海外数据延迟问题
我们海外的节点很多,但是又非常的分散。可能某个国家仅仅有几台机器,为了实现日志分析的业务需要把海外的数据传输回国内的数据中心上来。当前的选型是通过 Kafka 进行传输。直接通过公网的方式把数据写入到 Kafka,国内的数据中心节点对 Kafka 的数据进行消费。
国内的公网传输的延迟也还可以,因为我们本身对于数据的延迟性要求也不是太高。可能某些告警类的业务需要考虑延迟性。
随着告警业务的增多,对于海外数据的延迟性有了一些要求,但是在实际使用中发现,海外数据的延迟问题非常大
这里是 ping 的当时的状态。可以看到丢包与时延都很高,同时又进行了 traceroute 的跟踪,发现某些数据的写入绕着地球转了半圈再回到国内 (好想做一个数据包一秒钟环游世界)
不同的地区的延时不一样,最严重的地区丢包非常的高,时延也非常的高。
解决方案
咨询了相关的厂商,给予了三个解决方案。专线、海外计算获得结果后只传输结果、搭建中转节点。分析到最后,最终选择了中转节点的方案。
我们选择了一个网络情况较好的某个地区进行网络测试,就是从其他的各个节点中传输数据到该地区的服务器,查看网络状况,最终测试结果网络最差的地区仍然有 200ms 的时延,但是丢包情况已经基本不存在。而通过该中转节点到 Kafka 节点的时延在 30ms 左右。
ok,那么现在就在该节点搭建了一台服务器进行日志数据的传输。
搭建 nginx 进行数据中转
由于 Kakfa 使用的 TCP 协议,nginx 的搭建也比较简单,直接把接收到的相关的数据直接透传到 Kafka 节点即可, 配置如下
stream {
upstream proxy_port {
hash $remote_addr consistent;
server kafka_1:9092;
server kafka_1:9092;
server kafka_1:9092;
}
server {
listen 9000;
proxy_connect_timeout 20s;
proxy_timeout 5m;
proxy_pass proxy_port;
}
}
配置完成后,producer 节点修改为写入到 nginx 的 9000 端口,观察发现数据已经通过中转节点写入成功。
同时数据的延迟问题得到了很大的改善,当然仍然有部分节点存在写入到中转节点的时延较高,但是丢包情况基本上得到解决。当然,公网传输仍然可能出现问题。但是基本已满足要求。
跨境数据的传输需要进行相关合法性审查。
关于如何分析数据通过中转后传输到 Kafka 集群的过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。