각 PoP은 평면의 셀을 소유합니다
Voronoi tessellation
N개의 점(N: PoP)을 평면에 배치하고, 평면의 모든 점이 가장 가까운 PoP에 할당되는 지역 경계를 그립니다. 결과는 N개의 셀로 평면이 분할되며, 각 셀은 해당 PoP에 더 가까운 다른 PoP보다 더 가까운 모든 점을 포함합니다.
CDN 기하학: 사용자의 각 요청은 가장 가까운 PoP로 라우팅됩니다. 각 PoP는 평면의 지리적 평면의 셀을 서비스합니다. 이웃 PoP 사이의 선의 중점을 따라 셀 경계를 그립니다.
기하학적 읽기:
- PoP를 추가하면 이웃의 셀 크기를 줄입니다(새 셀 생성)
- PoP를 제거하면 해당 셀이 이웃에게 분배됩니다(이웃의 용량 급증)
- 요청 분배가 변경되는 경우 셀 경계 근처의 사용자가 PoP를 바꿔 보기도 합니다
- 하나의 PoP가 실패하면 해당 PoP의 셀이 정지하는 동안 모든 이웃 셀이 확장됩니다
운영적 결과: PoP가 실패하면 부하가 사라지지 않고 이웃 PoP로 마이그레이션합니다. 이웃이 정상 셀만 위해 크기를 할당받으면 급증이 다음 이웃을 부숍니다(cascading PoP failure). 성숙한 CDN 제공업체는 이웃 실패 급증을 고려하여 각 PoP를 크게 할당합니다.
거짓말을 할 수 없는 삼각형 부등식
물리학은 바닥을 설정합니다
공기 중에서는 빛이 약 300,000km/s로 이동하며, 섬유 내에서는 약 200,000km/s로 이동합니다(refractive index로 인해). 따라서:
- 섬유 길이 1,000km = 단방향 5ms = 왕복 10ms
- 대서양을 횡단하는 미국 (~5,000 km) = ~50 ms RTT 최소값
- 미국에서 유럽으로 (~8,000 km) = ~80 ms RTT 최소값
- 반대편 (세계를 반 도는 곳) = ~200 ms RTT 최소값
이것은 바닥입니다. 실제 RTT는 항상 더 크며 (라우터 홉, 스위칭, 큐잉, 혼잡), 물리학이 허용하는 것보다 빠르게 애플리케이션을 실행할 수 없습니다.
삼각형의 등식
세 노드 A, B, C에 대해, 삼각형의 등식은 d(A,C) <= d(A,B) + d(B,C)를 말합니다: 직선 경로는 간접 경로의 길이보다 짧거나 같아야 합니다.
네트워크 읽기: 서비스가 A -> B -> C 대신 A -> C로 직접 전달하지 않는다면, 지연 시간은 두 구간 지연 시간의 합 이상입니다. 일반적으로 더 길어지는 경향이 있습니다. B에서 처리되는 것 때문입니다.
아키텍처적 읽기: 프록시, 로드 밸런서, CDN 홉 등 간접성이 있으면 사용자의 지연 시간에 한 라운드 트립 구간을 추가하게 됩니다. CDN의 이점은 사용자의 구간을 짧게 만들어서 (PoP가 원본보다 가까우면)이지만, 전체 홉 수는 증가합니다.
다중 지역의 함정: 서비스가 지역 A에서 읽기지만 지역 B에 쓰는 경우, 쓰기마다 A에서 B로의 지연 시간을 부담해야 합니다. A와 B의 거리가 100 ms라면, 쓰기마다 최소 100 ms 이상 지연 시간을 부담해야 합니다. 스트레치된 데이터베이스는 이러한 바닥을 매번 지불합니다.
바닥을 지불하기
서비스는 두 지역에서 실행됩니다: US-East (us-east-1) 및 EU-West (eu-west-1). 두 지역은 대략 5,500 km 떨어져 있습니다. 서비스는 US-East에 주 데이터베이스를 가집니다. EU 사용자는 EU-West 백엔드에서 요청을 처리하지만, 쓰기마다 US-East 주 데이터베이스로 호출이 필요합니다.
지리적 용량 설계
합성
이제 Voronoi 셀을 PoP 수용지로 읽을 수 있고, 광속 지연 바닥을 계산하고, 프록시 계층에서 큐잉 곡선을 적용할 수 있습니다.
모두 세 가지를 적용하십시오.
팀은 사용자가 북아메리카(60%), 유럽(30%), 아시아(10%)에 위치한 서비스의 CDN 커버리지 계획을 수립하고 있습니다. 그들은 6개의 PoP에 예산이 있습니다. 각 PoP는 70%의 안정적인 셀을 제공할 수 있으며, 큐잉 곡선 무릎을 넘지 않습니다.
동료 과정 마무리
동료 과정 마무리
당신은 모든 다섯 가지 기하학-* 동료 수업을 완료했습니다:
- 프록시 및 원본: 지시 그래프, 홉 카운트, 팬인 / 팬아웃, 간접성
- 상태리스 수평 확장: 리틀의 법칙으로 영역, 큐잉 곡선 및 그 무릎
- 진입 및 출구 분리: 이중 구조, 자르기 정점 제거, 분할 내구성
- 실패 모드 및 폭파 반경: 사이드 베텐니스 중앙성, 최소 컷, 지름
- 관측 가능성 및 용량 (이것): Voronoi PoP 셀, 지연 삼각형 바닥, 지리적 용량 설계
주제: 분산 시스템은 기하학적 구조를 가지고 있습니다. 모든 아키텍처는 그래프입니다. 모든 지연 바닥은 삼각비가 아닐 수 없습니다. 모든 용량 결정은 곡선과 무릎입니다. 기하학을 보자면, 운영 결정을 추론할 수 있습니다.
5개의 주 수업(cs_distsys_*)와 결합하면 웹 스케일 분산 시스템의 작동 정신 모델과 그래프 이론적 금기를 추론할 수 있습니다.
잘 했어요.