重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
今天就跟大家聊聊有關Kafka數據中轉傳輸的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
需求起源
由于某些海外節點的數據發送到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數據中轉傳輸的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。