Godns - Go實現的DNS快取服務器

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

最近用Go寫了一個DNS快取服務器,主要實現兩個功能:

  • DNS緩衝
    有緩衝失效機制,在cache未命中時,支援設定上層遞迴伺服器。
  • 全域hosts
    維護全域的hosts設定,統一實現解析網域名稱到指定IP的需求。
    另外,支援動態更新hosts記錄,而不需要重啟伺服器處理序。

重新造一個輪子的原因

實現了DNS快取服務器並支援自訂的hosts的開源軟體有很多,例如dnsmasq,之所以我們要自己寫一個,是因為dnsmasq的hosts記錄都是寫在本地檔案中,更新一條記錄後,要重啟進程才會生效。而我們需要能在不同的伺服器上共同維護一個全域的hosts記錄,並在hosts記錄修改後能立即生效。目前能找到的實現,包括dnsmasq,pdnsd,djbdns,還沒有一個能完全滿足我們需求的。

用Go實現的原因

之所以用Go來實現主要是擔心Python的效能問題,剛好最近看了大量Go的開源項目,因此便想要Go來嘗試一下。實踐證明,Go確實非常適合這類伺服器端應用的開發。程式效能還不錯,我們在4核2.5G CPU, 46G 記憶體的伺服器上測試,每秒大概能處理1.6W多個請求,這台機器上同時還跑了一些其它應用,如果在乾淨的機器上測試,資料應該還會更好一些。另外,整個開發效率也沒比python慢多少,差不多一個禮拜就完成了所有功能的開發。

目前godns已經部署到了我們的生產系統。
同時把代碼放到github上:https://github.com/kenshinx/godns , 歡迎有需要的同學試用,如果有什麼問題可以在github上反饋。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.