好吧,說我有一個簡單的網絡服務器實例,它總是響應「Hello world」,這個簡單的服務器只能同時處理1K連接。如何水平縮放http請求?
我必須同時處理1M個http請求,所以我用我的web服務器實例克隆了1K個節點。
但我只有一個切入點。所有請求都通過一點。
那麼應該把什麼作爲切入點來委託請求?哪些軟件可以將1M請求傳輸到1K Web服務器?
好吧,說我有一個簡單的網絡服務器實例,它總是響應「Hello world」,這個簡單的服務器只能同時處理1K連接。如何水平縮放http請求?
我必須同時處理1M個http請求,所以我用我的web服務器實例克隆了1K個節點。
但我只有一個切入點。所有請求都通過一點。
那麼應該把什麼作爲切入點來委託請求?哪些軟件可以將1M請求傳輸到1K Web服務器?
如果您使用循環法DNS,請求可以通過多個點來完成。
如果你想要在Linux上使用反向代理軟件,Nginx是最好的選擇。
node-http-proxy也似乎很流行。
Golang在其httputil包中內置了ReverseProxy。
(如果我沒有記錯的話,這三個以上將使用Linux上epoll
,但也不能保證任何軟件可以隨時處理1M的連接。這取決於很多因素。)
負載均衡是一個廣泛的話題。這裏有幾個鏈接閱讀:
https://en.wikipedia.org/wiki/Round-robin_DNS
https://en.wikipedia.org/wiki/C10k_problem
https://en.wikipedia.org/wiki/Clustered_web_hosting
謝謝!我知道很多反向代理工具,但他們中沒有人回答質疑如何設計同時處理1M請求的體系結構。你提供的鏈接不解釋如何做到這一點。 – corvax
@corvax http://blog.charmes.net/2015/07/reverse-proxy-in-go.html在這裏你可以找到一個例子。作者寫了一個'NewMultipleHostReverseProxy'來包裝'ReverseProxy'並使用多個主機。當請求進入時,主機被隨機選擇。 – cshu
@corvax http://nginx.org/en/docs/http/load_balancing.html – cshu