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