2016-12-27 6 views
0

좋아, 내가 항상 "Hello world"에 응답하는 간단한 웹 서버 인스턴스가 있고이 간단한 서버가 동시에 1K 연결 만 처리 할 수 ​​있다고 가정 해보십시오.HTTP 요청을 가로로 확장하는 방법은 무엇입니까?

1M HTTP 요청을 동시에 처리해야하므로 웹 서버 인스턴스에 1K 노드를 복제합니다.

하지만 하나의 진입 점이 있습니다. 모든 요청은 한 지점을 통해 전달됩니다.

그래서 위임 요청에 대한 진입 점으로 배치해야하는 항목은 무엇입니까? 어떤 소프트웨어가 1M 요청을 1K 웹 서버로 보낼 수 있습니까?

답변

5

라운드 로빈 DNS를 사용하는 경우 요청은 여러 지점을 통해 올 수 있습니다.

Linux에서 역방향 프록시 용 소프트웨어를 원한다면 Nginx를 사용하십시오.

node-http-proxy도 꽤 인기가있는 것처럼 보입니다.

Golang에는 httputil 패키지에 ReverseProxy가 내장되어 있습니다.

(제가 잘못 본게 아니라면, 세 위의 리눅스에 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