2016-11-14 71 views
0

我有多個Node.js服務器,並且我希望每個客戶端連接到離它們最近的一個(或者最少跳數)。ping是尋找最佳服務器的最有效方法嗎?

目前,我正在讓客戶端連接到首先響應的服務器(即最低的ping)。

但是,這實際上是一種將人們匹配到最佳服務器的準確方法嗎?如果不是,那麼更好的方法是什麼?

回答

0

單個ping會給你一個單一的往返時間指標。這總比沒有好,並且通常(但並非總是)可以成爲該服務器的一般網絡延遲的良好代理。從這開始就可以了。請記住:

  1. 平是通常由OS直接而不是你的應用程序,因此可ping服務器可能已崩潰或慢的應用程序處理
  2. ICMP通常防火牆阻擋這樣的ICMP消息無法打開的服務器實際上可能正在爲應用程序提供服務。

但是「最好」的服務器是一個複雜得多,如果你想要高品質的決心「最好的」你可能需要考慮到服務器的最近的表現更加全面,包括例如最近的應用程序級別響應時間,活動連接總數,CPU負載,I/O負載等。您可能希望爲客戶端提供應用程序級別的方式以請求基本的運行狀況/性能指標以及服務器發送它們返回,然後將算法轉換爲可排名的數字分數。我認爲,延遲獲得空白響應後的下一步很好,只需在最後一分鐘左右查看每個服務器的平均(或百分位)響應時間,然後選擇時間最短的響應時間。

相關問題