Kafka記錄Nginx的POST請求

最近由於工做緣由,須要將Nignx的POST請求數據實時採集到Kafka中。最容易的想到的方案就是經過"tail -f" Nginx的log日誌到Kafka的Broker集羣中,可是這種方案效率、吞吐量都很低,徹底沒法知足業務上的須要。因此若是能直接在Nginx中獲取到POST請求數據,並調用Kafka的API接口將數據直接寫入到Kafka集羣中,是最完美的解決方法了。可是此種方案存在一個難點啊,就是要寫一個Nginx模塊,因爲剛開始接觸Nginx,這塊不是很熟。只能藉助萬能Google了,輸入關鍵字「Nginx Kafka」,沒想到還真找到一個開源的Nginx模塊(ngx_kafka_module),心中萬分高興,原本覺得拿來就能用呢,通讀代碼才發現,它只能將POST請求發給一個Broker,不能借助Zookeeper的集羣管理功能,讓zookeeper自動幫助選一個Broker。沒有辦法了,只能本身動手修改一下了。首先從瞭解編寫Nginx模塊的步驟入手,找到淘寶開源的"Nginx開發從入門到精通"電子書,這裏要贊一下,果真是對Nginx有深刻了解,要不也不能寫出這麼深刻淺出的書。在瞭解了編寫步驟後,開始對ngx_kafka_module着手進行改造,在ngx_kafka_module裏增長了一個「kafka.broker.list」的main配置項和一個全局變量(g_broker_list)用於記錄nginx.conf配置文件中kafka.broker.list的值,並在該模塊初始化時,用此全局變量設置kafka_conf的「metadata.broker.list」屬性,而後用此kafka_conf初始化一個生產者。這樣當每來一個POST請求時,就是可經過今生產者將POST消息發送到相應的topic。nginx

相關文章
相關標籤/搜索