2016-12-27 11 views
0

私は単純に "Hello world"に応答する単純なWebサーバーインスタンスを持っており、この単純なサーバーは1K接続だけを同時に処理できるとします。HTTPリクエストを水平方向に拡大/縮小するには?

私は1MのHTTP要求を同時に処理する必要があります。そのため、Webサーバーインスタンスで1Kノードをクローンします。

しかし、エントリポイントは1つしかありません。すべてのリクエストは1つのポイントを経由します。

委任要求のエントリポイントとして配置する必要があるのは何ですか? 1Mの要求を1KのWebサーバーに送ることができるソフトウェアは何ですか?

答えて

5

ラウンドロビンDNSを使用すると、要求は複数のポイントで送信されます。

Linuxでリバースプロキシ用のソフトウェアが必要な場合は、Nginxを使用してください。

node-http-proxyもかなり普及しているようです。

Golangには、そのhttputilパッケージにReverseProxyが組み込まれています。

(私は間違っていない場合は、上記の3つのすべてが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

https://en.wikipedia.org/wiki/Reverse_proxy

https://en.wikipedia.org/wiki/Load_balancing_(computing)

+0

はあなたに感謝!私は多くのリバースプロキシ機器を知っていますが、1Mの要求を同時に処理するアーキテクチャを設計する方法には疑問があります。あなたが提供したリンクは、その方法を説明していません。 – corvax

+0

@corvax http://blog.charmes.net/2015/07/reverse-proxy-in-go.htmlここに例があります。著者は 'ReverseProxy'をラップして複数のホストを使う' NewMultipleHostReverseProxy'を書いた。要求が到着すると、ホストがランダムに選択されます。 – cshu

+0

@corvax http://nginx.org/en/docs/http/load_balancing.html – cshu

関連する問題