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

Inbound & Outbound Là Các Tập Hợp Rõ Rệt

Đồ Thị Hai Phần Trong Kiến Trúc Mạng

Một đồ thị hai phần chia các nút thành hai tập hợp, với các cạnh chỉ được phép giữa các tập hợp (không bao giờ trong cùng một tập hợp).

Ranh giới mạng có cấu trúc hai phần tự nhiên:

- Phía Ingress: các client bên ngoài ở một phía, các dịch vụ nội bộ ở phía kia. Các cạnh: các yêu cầu từ bên ngoài đi vào, các phản hồi nội bộ đi ra.

- Phía Egress (xuất): các dịch vụ nội bộ ở một bên, các đích bên ngoài ở bên kia. Các cạnh: các dịch vụ nội bộ khởi tạo các cuộc gọi ra bên ngoài, các phản hồi từ bên ngoài quay trở lại.

Sự bất đối xứng:

- Ingress (nhập): tập nguồn không giới hạn (bất kỳ ai trên internet). Tập đích nhỏ (vài dịch vụ). Khối lượng tăng theo số lượng người dùng.

- Egress (xuất): tập nguồn nhỏ (vài dịch vụ nội bộ). Tập đích có giới hạn (vài đối tác đã biết). Khối lượng tăng theo hoạt động nội bộ.

Thiết kế hộp đơn (single-box) gộp cả hai nửa đồ thị hai phần (bipartite) qua một nút duy nhất. Nút đó có fan-in từ bên ngoài (ingress) VÀ fan-in từ bên trong (hướng ngược lại của egress). Tải của nút = tổng của cả hai phía.

Thiết kế tách biệt (split design) giữ cả hai nửa đồ thị hai phần ở các nút riêng biệt. Mỗi nút xử lý một vai trò với trục mở rộng (scaling) phù hợp.

Bipartite ingress & egress: separate node sets, separate cut vertices

Vẽ đồ thị hai phần cho một SaaS nhỏ: 5 điểm cuối khách hàng bên ngoài (gửi yêu cầu vào), 3 dịch vụ nội bộ (các backend) & 4 API đối tác bên ngoài (được gọi ra). Xác định các cạnh thuộc nửa đồ thị hai phần ingress & các cạnh thuộc nửa đồ thị hai phần egress. Dự đoán điều gì xảy ra với tính liên thông của đồ thị nếu một trong các dịch vụ nội bộ bị lỗi.

Trước Khi Tách: Một Đỉnh Cắt Ở Mọi Nơi

Hộp Đơn: Một Đỉnh Duy Trì Mọi Thứ

Trước khi tách, một hộp proxy duy nhất nằm giữa mọi cặp bên ngoài/bên trong. Theo thuật ngữ đồ thị, đây là một đỉnh cắt có bậc cao: việc loại bỏ nó sẽ ngắt kết nối tất cả các client khỏi tất cả các backend VÀ tất cả các dịch vụ nội bộ khỏi tất cả các đối tác bên ngoài.

Độ kết nối tại nút này = 1. Bất kỳ yếu tố nào làm gián đoạn nút này (lỗi tiến trình, sự cố mạng, OOM kill) sẽ ngắt kết nối mọi đường dẫn phụ thuộc.

Sau khi Tách: Đỉnh Cắt Được Thay Thế Bằng Hai Nút Nhẹ Hơn

Việc tách thành ingress + egress tạo ra hai nút đồ thị thay vì một. Mỗi nút giờ đây chỉ nằm trên một nửa đồ thị hai phần (bipartite):

- Nút Ingress: đỉnh cắt cho nửa đồ thị hai phần từ client bên ngoài đến dịch vụ nội bộ

- Nút Egress: đỉnh cắt cho nửa đồ thị hai phần từ dịch vụ nội bộ đến đối tác

Vòng lặp hairpin biến mất về mặt hình học: trong đồ thị một hộp, một dịch vụ nội bộ cố gắng tiếp cận một dịch vụ hướng ra bên ngoài qua địa chỉ công cộng yêu cầu đi qua cùng một đỉnh hai lần (ra qua vai trò egress, sau đó vào qua vai trò ingress). Trong đồ thị đã tách, hành trình đi qua hai đỉnh khác nhau.

Độ kết nối cho mỗi phía vẫn là 1, nhưng hai đỉnh cắt có thể được thay thế độc lập. Việc thêm một proxy ingress thứ hai sẽ nâng độ kết nối phía ingress lên 2 mà không làm thay đổi phía egress.

Sao chép theo từng phía

Các đội sản xuất thường chạy 2+ proxy ingress (HA) VÀ 2+ proxy egress (HA). Mỗi phía đạt kết nối 2 độc lập. Dung lượng được mở rộng theo chiều ngang ở mỗi phía theo nhu cầu.

Một nhóm hiện đang chạy một hộp proxy (đỉnh cắt duy nhất cho cả hai hướng). Họ tách nó thành một ingress + một egress, sau đó thêm một ingress thứ hai (cặp HA) nhưng vẫn giữ một egress duy nhất. Hãy xem xét cách kết nối đồ thị thay đổi ở từng bước, & xác định nửa đồ thị hai phần vẫn còn 1-kết nối sau bước 3 (do đó vẫn là chế độ lỗi có độ dung sai thấp nhất).

Khả năng chịu lỗi phân vùng mạng

Tổng hợp

Bây giờ bạn có thể đọc các kiến trúc mạng như đồ thị hai phần, xác định các đỉnh cắt (cut vertices) & theo dõi tính kết nối theo từng nửa.

Áp dụng điều này vào các phân vùng mạng.

Một phân vùng mạng (network partition) là một vết cắt đồ thị: các cạnh (edges) xuyên qua phân vùng bị lỗi; cả hai phía vẫn hoạt động nhưng không thể liên lạc được với nhau.

Một hệ thống phân bố địa lý có hai trung tâm dữ liệu (datacenter) được kết nối bằng một liên kết liên trung tâm dữ liệu (inter-DC link) duy nhất. Lưu lượng đầu vào (ingress traffic) đi vào qua DC1; lưu lượng đầu ra (egress) đi qua DC1 đến các đối tác bên ngoài; một số dịch vụ nội bộ nằm ở DC2 & gọi ngược lại DC1 cho các thao tác có trạng thái (stateful operations).

Dự đoán điều gì sẽ xảy ra nếu liên kết liên trung tâm dữ liệu bị lỗi: (1) các nửa đồ thị hai phần nào vẫn được kết nối bên trong mỗi trung tâm dữ liệu, (2) các luồng lưu lượng nào tiếp tục & những luồng nào dừng lại, & (3) đề xuất một thay đổi kiến trúc để hệ thống có thể chịu được phân vùng này với suy giảm hiệu năng có giới hạn thay vì sự cố hoàn toàn.

Ghi chú bổ trợ

Ghi chú bổ trợ

Bài học về hình học này diễn giải lại bài học chính Tách biệt Ingress & Egress dưới dạng phân tích đồ thị hai phần.

Ghi chú bổ trợ tiếp theo, geometry_of_failure_modes_and_blast_radius, sẽ suy ra độ trung tâm giữa (xác định các nút nút cổ chai) & cắt tối thiểu (giới hạn bán kính ảnh hưởng).

Làm tốt lắm.