Ngang hàng mô tả cách các gói tin của ứng dụng di chuyển, và không hơn thế. Các nút vẫn phải tìm thấy nhau, chứng minh mình là ai và đôi khi phải nhờ đến bộ chuyển tiếp khi không thể dựng đường trực tiếp. Đó là ba dịch vụ riêng biệt, và một triển khai có thể ngang hàng về dữ liệu trong khi hoàn toàn tập trung về mọi thứ khác. So sánh thiết kế nghĩa là so sánh những công việc đó, không phải mũi tên trên sơ đồ.

Một sơ đồ không có mũi tên chuyển tiếp trung tâm có thể che giấu cơ quan đăng ký, dịch vụ khám phá và bộ chuyển tiếp, tất cả đều là phụ thuộc vận hành.

Đường trực tiếp, mặt phẳng điều khiển chung

Hai máy trao đổi gói tin trực tiếp vẫn có thể phụ thuộc vào một cơ quan chung đã cấp chứng chỉ cho chúng và một dịch vụ đã cho mỗi bên biết bên kia ở đâu. Cả hai vai trò đều không chuyển tiếp lưu lượng ứng dụng, đó là lý do sơ đồ cấu trúc bỏ qua chúng. Khi cơ quan hoặc dịch vụ đó không khả dụng, các phiên hiện có có thể tiếp tục trong khi nút mới không thể tham gia. Khác biệt giữa bắt đầu một phiên và tiếp tục phiên đó là câu hỏi đầu tiên cần đặt ra với bất kỳ thiết kế nào.

Vẽ từng công việc riêng, kể cả khi một máy chủ làm tất cả. Nếu không, sơ đồ cho thấy một mặt phẳng dữ liệu phi tập trung và che giấu thực tế vận hành rằng mỗi nút mới đều cần hai dịch vụ ấy.

Khám phá, tin cậy và bộ chuyển tiếp là ba công việc

Thiết kế của Nebula là ví dụ hữu ích vì tài liệu của nó tách riêng những thứ này. Các máy chủ mang chứng chỉ cho danh tính, hải đăng trả lời câu hỏi ở đâu và giúp vượt NAT, còn bộ chuyển tiếp chuyển lưu lượng khi không thể thiết lập đường trực tiếp. Vai trò bộ chuyển tiếp được cố ý tách khỏi vai trò hải đăng, nên một hải đăng tiếp cận được không bảo đảm rằng một cặp cụ thể có thể nói chuyện. Các sản phẩm khác vẽ ranh giới ở chỗ khác, vì thế đây là ví dụ chứ không phải khuôn mẫu.

Với một triển khai được đề xuất, hãy ghi lại đường dự phòng được hỗ trợ cho một cặp không thể kết nối trực tiếp. Một lần đục lỗ thất bại là một điểm dữ liệu về một mạng, không phải bằng chứng rằng hai nút sau NAT không bao giờ gặp được nhau; tuyên bố ngược lại, rằng kết nối trực tiếp hoạt động dưới mọi chính sách, cũng thiếu cơ sở như vậy.

Mỗi phụ thuộc thất bại ở đâu

Đánh giá bốn trường hợp riêng biệt trong khi phụ thuộc đang thử nghiệm không khả dụng: lưu lượng hiện có giữa các nút, một kết nối nút hoàn toàn mới, một nút đã đổi điểm cuối, và quyền truy cập vừa bị thu hồi. Mỗi trường hợp dựa vào các dịch vụ khác nhau và thất bại khác nhau. Các phiên hiện có có thể sống sót qua một sự cố khám phá trong khi khóa bị thu hồi vẫn bị từ chối, và một nút mới có thể thất bại vì lý do không liên quan gì đến việc chuyển tiếp. Hãy thử từng trường hợp thay vì kết luận từ một trường hợp.

Một kết nối sống sót qua một lần gián đoạn không chứng minh được sự độc lập vô hạn. Nó chứng minh rằng sự cố bạn gây ra không phải là sự cố phá vỡ đường đó, điều vẫn là thông tin hữu ích miễn là bạn đã ghi lại mình đã gây ra gì.

Hỏi xem bạn chịu được sự cố nào

Những yêu cầu nghe giống nhau dẫn đến những thiết kế khác nhau. Tránh một điểm nghẽn chuyển tiếp không giống với tránh một mặt phẳng điều khiển do nhà cung cấp lưu trữ, và cả hai đều không tương ứng với việc tiếp tục vận hành khi một bộ điều phối gặp sự cố. Hãy nêu rõ triển khai phải đáp ứng điều nào trong ba điều đó, rồi kiểm tra ánh xạ. Một thiết kế đáp ứng điều thứ nhất và thất bại ở điều thứ hai là phổ biến và không phải không trung thực, miễn là không ai gọi nó là hoàn toàn phi tập trung.

Ghi lại ai vận hành khám phá, tin cậy và bộ chuyển tiếp, và mỗi thứ được thay thế ra sao. Chính bản ghi đó cho phép người tiếp theo trả lời một câu hỏi thật: mạng này chịu được những hỏng hóc nào, và ai duy trì trạng thái vẫn còn được chia sẻ?

Từ phi tập trung chỉ có giá trị khi nó nêu tên những hỏng hóc đó. Không có danh sách ấy, nó mô tả một sơ đồ chứ không phải một hệ thống.

Bài viết liên quan