共計 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 行業資訊頻道了解更多相關知識。