병목 노드가 교통량이 도착하기 전에 식별됩니다
중심성 사이니티
그래프의 모든 노드 쌍에 대해 가장 짧은 경로가 있습니다. 중심성 사이니티는 N 노드 = 가장 짧은 경로 중 N을 통과하는 모든 쌍의 비율입니다.
높은 중심성 사이니티를 가진 노드는 다른 쌍 사이에 많은 흐름이 느려지거나 중단되는 이유입니다.
건물 구조 읽기: 높은 중심성 사이니티 노드는 모든 건물 구조 검토에서 특별히 주의를 집중해야 합니다. 그들은 병목, SPOF 및 한 번에 용량이 중요한 구성 요소입니다. 그들은 주로:
- DNS 공급자(모든 클라이언트 및 모든 서비스 사이에 위치)
- 인가 프락시(모든 클라이언트 및 모든 백엔드 사이에 위치)
- 데이터베이스 주-primary(모든 백엔드 및 모든 읽기 사이에 위치)
- 인증 서비스(모든 사용자 및 모든 승인된 작업 사이에 위치)
측정 없이 탐지: 그래프 토폴로지만 높은 중심성 사이니티 노드를 식별할 수 있습니다. 교통 데이터가 필요하지 않습니다. 건물 구조 도표가 필요합니다. 다른 것들 사이에 많은 쌍을 차지하는 노드는 구조적으로 중요한 것으로 간주됩니다.
운영적 결과: 높은 중심성 사이니티 노드는(1) 용량 헤드룸, (2)冗餘, (3) 관측성 및 (4) 인사이던스 응답 플레이북에 대한 비례된 투자 가치가 있습니다.
작은 절단이 가장 작은 조각을 분리합니다
Min-Cut 정리의 평민 용어
그래프의 두 노드 사이의 min-cut = 그들을 분리하기 위해 제거해야 하는 가장 작은 수의 엣지(또는 노드)입니다.
작동 중인 읽기: min-cut가 최악의 경우 폭발 반경을 제한합니다. '클라이언트'와 '데이터베이스' 사이의 min-cut이 1개의 에지(단일 프록시)로 구성되어 있다면, 그 에지를 잃으면 모든 클라이언트가 데이터베이스에서 연결되어 있지 않습니다. min-cut이 5인 경우, 완전히 연결을 끊기 위해 동시에 5개의 구성 요소를 잃어야 합니다; 불행하지만 제한되어 있습니다.
폭발 반경을 설계하는 방법: 중요한 경계마다 min-cut을 높여주세요. 여러 프록시; 여러 캐시 노드; DC 사이의 네트워크 경로의 여러 개. 각 추가는 min-cut을 1씩 높입니다.
그래프 용 Bulkhead 패턴: 자원이 서로 다른 하위 그래프로 분할되어, 서로 다른 min-cut를 공유하지 않도록 합니다. 한 하위 그래프 내에서 실패가 발생하면 다른 것들로 전파되지 않습니다. 왜냐하면 에지가 없기 때문입니다.
지름이 실패 전파 거리를 설정합니다
그래프 지름 = 두 노드 사이의 가장 긴 최단 경로입니다.
실패 전파: 노드가 실패하고 재시작 흐름이 돌아, 지름 거리까지 상류 노드를 건내줍니다. 지름이 3인 시스템(클라이언트 -> 프록시 -> 백엔드 -> DB)은 DB 실패가 3단계 상류 계층에서 재시작 폭풍을 일으킵니다.
의미: 지름이 짧을수록 빠른 실패 격리 but 또한 노드 집중도 빠릅니다. 각 설계는 제한되어 있습니다.
실제 아키텍처에서 Compute Min-Cut
아키텍처: 1 DNS, 1 CDN, 3 역프록시, 12 백엔드 복제본, 1 DB 주
그래프 메트릭을 통해 실패 모드 감사
합성
이제 높은 betweenness 노드를 식별할 수 있으며, 모든 경계에서 min-cut을 계산하고 지름으로 실패 전파 거리를 추정할 수 있습니다.
모두 세 가지를 적용합니다.
시스템: 50 고객 엔드포인트 -> 1 DNS -> 2 CDN POPs -> 4 역Reverse 프록시 -> 16 백엔드 복제본 -> { DB 클러스터 (1 주-primary + 2 standbys), Redis 클러스터 (5 노드), 3 외부 API }.
동료 노트
동료 노트
이 기하학-수업은 Failure Modes & Blast Radius 주 수업을 그래프 지표(betweenness, min-cut, diameter)로 재해석한다.
geometry_of_observability_and_capacity라는 마지막 동료는 CDN PoP 포획을 위한 Voronoi 셀, 지연 삼각형의 빛의 지속적인 바닥, 프록시 계층의 큐잉 곡선에 대해 다시 방문한다.
잘 했어요.