English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

khách
1 / ?
trở lại bài học

Mỗi PoP Sở hữu Một Ô của Mặt phẳng

Lát gạch Voronoi

Đặt N điểm (PoP: Điểm hiện diện) trên một mặt phẳng. Vẽ các ranh giới vùng sao cho mọi điểm trên mặt phẳng được gán cho PoP gần nhất. Kết quả là một biểu đồ Voronoi: mặt phẳng được phân chia thành N ô, một ô cho mỗi PoP, mỗi ô chứa tất cả các điểm gần PoP của nó hơn so với bất kỳ PoP nào khác.

Hình học CDN: mọi yêu cầu của người dùng được định tuyến đến PoP gần nhất. Mỗi PoP phục vụ một ô của mặt phẳng địa lý. Các ranh giới ô là các đường trung trực của các đường nối giữa các PoP lân cận.

Cách đọc hình học:

- Thêm một PoP làm thu nhỏ các ô của các PoP lân cận (& tạo ra một ô mới)

- Xóa một PoP buộc ô của nó phải phân phối lại cho các PoP lân cận (gây đột biến dung lượng tại các PoP lân cận)

- Một người dùng nằm gần biên giới của một ô có thể chuyển đổi giữa các PoP khi cân bằng tải thay đổi

- Sự cố của một PoP làm mở rộng hiệu quả ô của mọi PoP lân cận trong thời gian sự cố

Hậu quả vận hành: khi một PoP gặp sự cố, tải của nó không biến mất; nó di chuyển sang các PoP lân cận. Nếu các PoP lân cận chỉ được thiết kế cho dung lượng bình thường của ô của chúng, sự đột biến này sẽ khiến chúng bị quá tải tiếp theo (sự cố PoP lan truyền). Các nhà cung cấp CDN chuyên nghiệp sẽ thiết kế dung lượng cho mỗi PoP với sự tính toán đến sự đột biến do sự cố của PoP lân cận.

Các ô Voronoi xung quanh các PoP; sự cố của một PoP làm mở rộng các ô lân cận

Một CDN vận hành 4 PoP phục vụ khu vực lục địa Hoa Kỳ: Bờ Tây, Vùng núi, Trung Tây và Bờ Đông. Mỗi PoP được thiết kế cho khoảng 25% tổng lưu lượng của Hoa Kỳ. PoP Vùng núi gặp sự cố. Dự đoán: (1) PoP lân cận nào sẽ hấp thụ tải được phân phối lại, & với tỷ lệ xấp xỉ bao nhiêu, & (2) điều gì sẽ xảy ra nếu các PoP lân cận đó được thiết kế chính xác cho 25% mỗi PoP mà không có dung lượng dự phòng.

Bất đẳng thức Tam giác mà bạn không thể qua mặt

Vật lý đặt ra ngưỡng dưới

Ánh sáng truyền đi với tốc độ ~300.000 km/s trong chân không. Trong sợi quang, tốc độ khoảng 200.000 km/s do chiết suất. Điều đó có nghĩa là:

- ~1.000 km sợi quang = ~5 ms một chiều = ~10 ms khứ hồi

- Bờ Đông sang bờ Tây Hoa Kỳ (~5.000 km) = ~50 ms RTT tối thiểu

- Hoa Kỳ sang Châu Âu (~8.000 km) = ~80 ms RTT tối thiểu

- Hai điểm đối cực (nửa vòng quanh thế giới) = ~200 ms RTT tối thiểu

Đây là mức sàn. RTT thực tế luôn lớn hơn (các bước nhảy router, chuyển mạch, xếp hàng, tắc nghẽn). Không ứng dụng nào có thể nhanh hơn giới hạn cho phép của vật lý.

Bất đẳng thức tam giác

Với ba nút A, B, C, bất đẳng thức tam giác nói rằng d(A,C) <= d(A,B) + d(B,C): một đường đi trực tiếp ngắn hơn (hoặc bằng) bất kỳ đường đi gián tiếp nào.

Cách đọc trong mạng: nếu dịch vụ của bạn định tuyến A -> B -> C thay vì A -> C trực tiếp, độ trễ sẽ ít nhất là tổng độ trễ của hai chặng. Thường là nhiều hơn do xử lý tại B.

Cách đọc kiến trúc: mỗi lớp trung gian (proxy, load balancer, hop CDN) đều thêm ít nhất một chặng round-trip vào độ trễ cảm nhận của người dùng. Lợi ích của CDN đến từ việc làm ngắn chặng của người dùng (PoP gần hơn so với origin), mặc dù tổng số hop tăng lên.

Bẫy đa khu vực: một dịch vụ đọc từ khu vực A nhưng ghi vào khu vực B sẽ chịu độ trễ A-to-B cho mỗi thao tác ghi. Nếu A & B cách nhau 100 ms, mỗi thao tác ghi mất tối thiểu >= 100 ms. Các cơ sở dữ liệu kéo dài (stretched databases) phải trả mức sàn này mỗi lần.

Tam giác độ trễ: Sàn A-B-C được đặt bởi khoảng cách vật lý

Trả Mức Sàn

Một dịch vụ chạy ở hai khu vực: US-East (us-east-1) & EU-West (eu-west-1). Hai khu vực này cách nhau khoảng 5.500 km. Dịch vụ có cơ sở dữ liệu chính (primary database) ở US-East. Người dùng EU có các yêu cầu của họ được xử lý bởi các backend ở EU-West, nhưng mọi thao tác ghi đều yêu cầu một cuộc gọi quay lại primary ở US-East.

Tính mức sàn độ trễ cho một thao tác ghi của người dùng EU (round-trip từ trình duyệt của họ đến backend EU-West, đến primary US-East & quay lại). So sánh với một thao tác đọc của người dùng EU được phục vụ hoàn toàn từ trạng thái cache ở EU-West. Sau đó, đề xuất một thay đổi kiến trúc để giảm mức sàn độ trễ ghi cho người dùng EU.

Thiết kế năng lực theo địa lý

Tổng hợp

Bạn giờ có thể đọc các ô Voronoi như các vùng thu hút PoP, tính sàn độ trễ theo tốc độ ánh sáng, & áp dụng đường cong hàng đợi ở tầng proxy.

Áp dụng cả ba.

Một nhóm lập kế hoạch phủ sóng CDN cho một dịch vụ có người dùng ở ba châu lục: Bắc Mỹ (60% người dùng), Châu Âu (30%), Châu Á (10%). Họ có ngân sách cho 6 PoP. Mỗi PoP có thể phục vụ một cell ổn định ở mức sử dụng 70% mà không vượt qua điểm khuỷu của đường cong hàng đợi.

Thiết kế bố trí PoP: (1) bạn sẽ phân bổ 6 PoP trên ba châu lục như thế nào, (2) đối với thị phần người dùng nhỏ nhất (Châu Á ở mức 10%), sàn độ trễ (latency floor) cho một người dùng Châu Á được phục vụ từ một PoP Châu Âu là bao nhiêu nếu không có PoP Châu Á (giả sử khoảng cách ~9000 km), và (3) bạn sẽ yêu cầu bao nhiêu dung lượng dự phòng (capacity headroom) cho mỗi PoP để tồn tại khi một PoP bị lỗi mà không gây ra sự cố dây chuyền?

Kết thúc Khóa học Bổ trợ

Kết thúc Khóa học Bổ trợ

Bạn đã hoàn thành cả năm bài học đồng hành về hình học của hệ thống phân tán:

- Proxy & Nguồn gốc (Origins): đồ thị có hướng, số bước nhảy (hop count), fan-in / fan-out, gián tiếp (indirection)

- Mở rộng ngang không trạng thái (Stateless Horizontal Scaling): Định luật Little như diện tích, đường cong hàng đợi & điểm khuỷu (knee) của nó

- Tách biệt Ingress & Egress: cấu trúc hai phần (bipartite), loại bỏ đỉnh cắt (cut vertex), khả năng chịu phân vùng (partition tolerance)

- Chế độ lỗi & Bán kính ảnh hưởng (Failure Modes & Blast Radius): độ trung tâm giữa (betweenness centrality), cắt tối thiểu (min-cut), đường kính (diameter)

- Quan sát & Sức chứa (Observability & Capacity) (bài này): các ô PoP Voronoi, sàn tam giác độ trễ (latency triangle floor), thiết kế sức chứa theo địa lý

Sợi chỉ xuyên suốt: các hệ thống phân tán có cấu trúc hình học. Mọi kiến trúc đều là một đồ thị. Mọi sàn độ trễ đều là bất đẳng thức tam giác. Mọi quyết định về sức chứa đều là một đường cong & một điểm khuỷu. Một khi bạn nhìn thấy hình học, các quyết định vận hành sẽ bắt nguồn từ đó.

Kết hợp với năm bài học chính (cs_distsys_*), bạn đã có một mô hình nhận thức hoạt động của một hệ thống phân tán quy mô web & kỷ luật lý thuyết đồ thị để lập luận về nó.

Làm tốt lắm.