문제

저는 프로젝트를 진행하고 있습니다. 전 세계에 서버의 숫자 (현재 5 개)가 있습니다. 클라이언트는 중앙 집중식 브로커를 통해 해당 서버 중 하나에 연결합니다. 우리는 고객의 원래 국가를 알고 있지만 다른 것은 없습니다. 우리는 서버를 완전히 제어하여 필요한 정보를 모두 가질 수 있습니다. 우리는 고객을 제어하지 않으며 표준에 따라이 브로커를 통해 연결해야합니다.

브로커가 대기 시간이 낮은 서버를 선택하는 것이 중요하므로 데이터를 사용하면 근접성이 우리의 유일한 기준이라고 생각합니다.

최초의 아이디어는 각 서버에서 클라이언트를 핑하는 것이지만 IP는 없으며 국가 만 있습니다.

우리가 가진 다른 아이디어는 각 서버에서 각 국가의 루트 노드를 핑하는 것입니다. 문제는 각 국가에서 루트 노드를 찾는 것입니다.

"국가"간의 근접성을 계산/조회하는 방법을 알고 있습니까? 이 문제를 다른 방식으로 해결하는 방법에 대한 통찰력이나 아이디어가 있습니까?

도움이 되었습니까?

해결책

필요한 용어는 "지리적 부하 밸런싱"이라고 생각합니다. 대부분의 주요로드 밸런싱 공급 업체에는 여기에 솔루션이 있습니다. 브로커는이를 사용할 수 있습니다.

인터넷 검색 지리적 부하 밸런싱 유용한 결과를 얻습니다.

다른 팁

이것은 많은 사람들보다 더 까다 롭지 만 나는 옳은 대답.

물론 순진한 (그러나 멋진) 솔루션은 클라이언트의 IP를 확인하는 것입니다. 이것은 좋은 시작이지만 "실제 세계"에서 지리 위치는 전부가 아닙니다...

방금 ""낮은 대기 시간", 그것은 당신이해야한다는 것을 의미합니다 서버와 클라이언트 사이에 그에 따라 할당합니다. 개인적으로 여러 번 나에게 영향을 미치는이 문제의 아주 좋은 예는 제가 일본에서 일하고 있으며, 서버는 대만에서 미국의 서버에 더 가깝다고 말합니다. 하지만, 일본과 미국 사이의 대기 시간은 대만보다 많은 접힘 (더 나은 응답)입니다. 일본-대만 그 사이의 것만 큼 좋지 않습니다 일본-USA. 그래서 당신이 나를 대만에 연결했다면 내 IP가 더 가까이 있다고 생각하기 때문에, 당신은 나를 매우 큰 불리합니다 거기. 끊임없이 업데이트 된 지리적 위치 데이터베이스를 유지하는 것보다 핑과 실제 테스트가 더 쉽습니다.

이를위한 최상의 솔루션을 호출합니다 BGP Anycast (프레젠테이션 링크). 모든 현대 CDN의 초석입니다.

와 함께 BGP Anycast, 여러 다른 서버가 전 세계에 퍼져 있으며 BGP를 통해 인터넷에 발표했습니다. 같은 IP. 그런 다음 인터넷은 마법을합니다. 평소와 같이 순은 트래픽을 운영합니다. 같은 IP 가장 짧은 경로를 통해 본질적으로 모든 사용자에게 가장 가까운 서버 (네트워크 토폴로지 관점에서)를 선택합니다.

불행히도 BGP를 통해 아무것도 발표 할 수는 없습니다. 대형 네트워크 (일반적으로 데이터 센터) 만 그렇게 할 수 있습니다. 그러나 저렴한 솔루션을 사용할 수 있으며 대부분은 DNS Anycast (즉, 클라이언트 위치를 기반으로 다른 웹 서버 IP로 해결) - 이것은 완벽하지는 않지만 많은 경우에 충분합니다 (예 : DNSMADEEASY, ROURE 53, EDGEDIRECTOR 및 실질적으로 모든 저렴한 CDN -CloudFlare, MaxCDN, Cloudfront 등). 진정한 BGP Anycast를 수행하는 솔루션도 있습니다. 즉, 실제로는 AdeCast (예 : 캐시 프리)를 통해 HTTP 트래픽을 제공하거나 (예 : hostvirtual- 저렴하지 않음) 할 수 있습니다. 이것 흥미로운 독서 일 수도 있습니다.

Paul은 그것을 가지고 있습니다. 당신은 지리적 부하 밸런싱을 원하지만, 당신의 최선의 방법은 그것이 전혀 옵션이라면, 그것을 전문으로하는 사람을 찾아 돈을 던지는 사람을 찾는 것이라고 덧붙일 것입니다. 그것은 문제의 클래스에 있습니다 많이 처음 보이는 것보다 안정적으로 해결하기가 더 어렵습니다.

그것들을 핑하고 가장 낮은 대기 시간을 가진 것을 골라내는 것은 좋지만, 나는 그것이 확장되지 않을 느낌이 좋지 않습니다 (100 또는 1000이있을 때 어떻게됩니까?) 다른 솔루션이 더 좋을까요? 이 작업을 수행하는 시스템과 함께 많은 공급 업체가 있습니다. DNS Anycast도 널리 사용됩니다.

만약 당신이 그들을 핑을했다면, 당신은 냄비 운지 대신 진정으로 낮은 대기 시간을 가진 하나를 선택하는지 확인하기 위해 각각 (이상적으로 평행하게)에 여러 핑을해야합니다.

또한 트래픽의 양이 매우 높을 때 궁극적으로 무게를 추가 할 수있는 방법을 원할 것입니다.

마지막으로 당신은 그들 중 일부를 관리적으로 다운로 표시 할 수있는 방법을 원할 것입니다 (유지 보수를 위해). 그러나 아마도 현재 사용할 수없는 광고가 아닌 광고를하지 않으면이 작업을 수행 할 수 있습니다.

핑은 작동하지 않습니다. 대부분의 클라이언트는 게이트웨이 및/또는 방화벽 뒤에있을 것이며 핑 패킷은 통과되지 않습니다. Genehack은 가장 잘 말했습니다. 서버로드 밸런싱이 필요하며 지리적 접근 방식 만 사용하는 것이 항상 최선의 방법이 아닐 수도 있습니다. SLB 솔루션 제공 전문가에게 돈을 버는 것이 좋습니다.

좋아, 몇 가지 빠른 생각. 나는 창립자였다 디지털 특사 - 지리적 IP 인텔리전스를 수행합니다. 나는 몇 년 전에 회사를 떠났지만 약 6 년 전에 우리는 공동 제품을 구축했습니다 ~와 함께 코요테 포인트 시스템 그것은이 기능 - 지리적 기반로드 밸런싱을 정확하게 수행했습니다. 물론, 자동으로 작동하지 않을 수있는 Edge Case (이 스레드에서 언급 된 대만/중국 예제)가 있지만 제품을 통해 사용자는 국가 트래픽이 어디로 갈지 결정할 수있었습니다. 따라서 대만이 미국에서 가장 잘 봉사했다고 결정했다면 그런 식으로 밀려날 것입니다.

불행히도, 솔루션에 대한 수요는 우리가 기대했던 것만 큼 좋지 않았으며 제품이 중단되었다고 생각합니다. 제안 할 것입니다 코요테 지점에 연락 그들이 당신에게 동등한 솔루션을 제공 할 수 있는지 확인하십시오. 그렇지 않다면, 나는 그들이하고 싶은 일을하는 방법에 대한 아이디어가있을 것이라고 생각합니다.

봉사해야 할 것에 따라 또 다른 옵션은 Amazon의 Cloudfront 서비스와 같은 것을 사용하는 것입니다. 물론, 정적 파일이 아닌 앱에 연결하기 위해 클라이언트가 필요한 경우, 그것은 당신에게는 효과가 없습니다.

btw, 전체 공개 - 저는 디지털 사절의 창립자 일뿐 만 아니라 현재 코요테 포인트 이사회에서 봉사하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top