위치에 따라 사용자를 다른 서버로 리디렉션하는 방법은 무엇입니까? 사용하여 개발 한

ASP.NET을 사용하여 개발 한 웹 사이트가 있으며 MY DB는 MySQL입니다. 현재 미국 서버에서 호스팅됩니다. 그러나 인도 근처에서 액세스하려고하면 동적 내용이 너무 느리게로드됩니다. 요청이 세계의 다른쪽으로 가야하기 때문에 허용됩니다. 미국에서는 정말 빠릅니다. 이미이 사이트를 cloudflare CDN과 연결했습니다. 그러나 CDN은 정적 컨텐츠에 유용합니다. 내 모든 페이지에는 거의 동적 인 내용이 있습니다.

이 웹 사이트를 확장하고 싶습니다. 따라서 미국에서 온 요청은 USA 서버의 요청을 처리하고 싶습니다. ASIA에서 온 요청은 ASIAN 서버에서 처리하고 싶습니다. 그러나 리디렉션 된 위치에 관계없이 두 서버의 컨텐츠는 동일해야합니다. (두 서버가 동기화되어야 함)

그렇다면이 아키텍처를 달성하는 방법은 무엇입니까?

어떻게 구글, 페이스 북, 야후? 그들은 어떻게 전세계에 봉사합니까? 모든 대륙에 데이터 센터가 있다고 생각합니다. 그들은 서로 어떻게 동기화됩니까?



답변

@ Gabriel-Talavera의 답변 외에도 몇 가지 메모를 추가합니다.

  • 지리적 부하 분산뿐 아니라 네트워크 라우팅은 서로 다른 서버 간의 “데이터 동기화”와는 전혀 관련이 없습니다. 매우 다양한 기술로 해결되는 두 가지 문제입니다.

귀하의 질문의 제목이 네트워킹 측면에 초점을 맞추고있는 것 같습니다. 첫 번째 부분 (네트워크 라우팅 문제)에 중점을 둘 것입니다.

직접 볼 수 있듯이 소규모 ICT 회사는 요구 사항을 충족하기가 어렵습니다. 그러나 “글로벌”회사 (귀하가 OP에서 언급 한 회사)는이를 채택하는 데 아무런 문제가 없습니다.

부수적으로, “애니 캐스트”에 대해 처음 들었을 때 CloudFlare BLOG 게시물 덕분에 (많은 것들 중에서도) 애니 캐스트가 D-에 대한 대책으로 채택 될 수있는 방법에 대해 논의했습니다. DOS 공격.


답변

BIND를 외부 DNS 서버로 사용하는 경우 BIND보기를 사용하여 위치를 기반 으로 선택적 DNS 응답을 제공 할 수 있습니다 . 새 버전의 Windows Server의 기술 미리보기에는 DNS 정책 이라는 기능이 있습니다.

클라이언트 위치 및 사용자 에이전트 또는 일정과 같은 다른 기준에 따라 콘텐츠를 제공하기 위해 F5에는 Global Traffic Manager라는 어플라이언스가 있으며로드 밸런서와 함께 사용하면 원하는 것을 얻을 수 있습니다. 클라우드 환경에서 Amazon의 Route 53은 동일한 작업을 수행 할 수 있습니다.

데이터를 동기화 상태로 유지하려면 동시 복제를 수행 할 수있는 스토리지 백엔드가 있거나 MySQL에서 제공하는 복제를 사용해야 복제 된 데이터의 일관성을 유지할 수 있습니다.


답변

원하는 상황이 있습니다.

  • 데이터 무결성은 직렬화 가능한 트랜잭션을 보장합니다.
  • 사용자는 전 세계적으로 데이터를 업데이트 할 수 있습니다.
  • 짧은 대기 시간으로 데이터를 업데이트 할 수 있습니다.

불행히도 위의 모든 조합은 물리적으로 가능하지 않습니다. 빛의 속도에 의해 제약을받습니다.

대신 정확한 요구 사항을 고려해야합니다. 일부 데이터의 경우 제한된 정확도로 충분합니다. YouTube 동영상의 시청 카운터를 고려하십시오. 대부분의 사람들은보기 카운터가 일시적으로 꺼져 있는지 상관하지 않습니다. 10 초 전 세계 반대편에서 발생한 조회수가 아직 포함되지 않았지만 5 초 전에 발생한 조회수가 포함 된 경우에도 여전히 정확합니다. 뷰 카운터의 무결성이 마음에 들지 않으면 두 명의 다른 사람이 모두 특정 동영상의 시청자 수 100이라고 생각할 위험이 있습니다. 그러나 대부분의 사람들은 그로 인한 피해를 무시할 만하다고 생각합니다.

다른 경우에는 데이터 무결성이 더 중요합니다. 두 사람이 동시에 동일한 사용자 이름으로 가입하려고 시도하십시오. 두 사람에게 사용자 이름을 가지고 있다고 말하는 것은 허용되지 않으므로 그러한 상황에서는 더 나은 무결성을 가진 느린 접근 방식을 선택할 것입니다. 두 사람에게 사용자 이름을 사용했음을 알리는 것이 가능하므로 가능한 한 접근 방식은 각 복제본에서 사용자 이름을 예약하고 복제본의 50 % 이상에서 성공한 경우에만 성공을보고하는 것입니다. 이 접근 방식으로 사용자가 0.5 초 동안 응답을받을 가능성은 없습니다. 그러나 사용자는 이러한 지연으로 인해 방해를받을 정도로이 프로세스를 자주 거치지 않습니다.

다른 경우에는 우수한 무결성과 빠른 업데이트가 필요할 수 있지만 한 사람 만이 특정 데이터를 업데이트 할 수 있습니다. 이 경우 신뢰할 수있는 데이터 사본을 해당 사용자와 가까운 서버에 배치하고 다른 서버에 캐시 된 버전 (대부분 최신 버전)을 갖도록 할 수 있습니다.