Lý thuyết, thuật toán và giao thức phân tán là nền tảng để hiểu distributed system. Khi học phần này, không nên chỉ học thuộc kết luận; quan trọng hơn là hiểu sự đánh đổi giữa consistency, availability, fault tolerance, consensus, performance và độ phức tạp khi triển khai trong thực tế của các phương án khác nhau.
Những bạn từng trải qua technical interview hẳn không còn xa lạ với hai theory CAP & BASE!
Khi tham gia phỏng vấn năm xưa, không hề nói quá, chỉ cần hỏi đến nội dung liên quan đến distributed system thì interviewer gần như đều hỏi hai theory nền tảng này. Một là vì đây là kiến thức nền bắt buộc để học distributed system, hai là vì nhiều interviewer khá quen thuộc với chúng (dễ đặt câu hỏi).
Một scheduled task được deploy với 3 instance. Đến 2 giờ sáng, rốt cuộc ai sẽ chạy batch task này?
Nếu cả 3 instance cùng chạy, dữ liệu có thể bị xử lý trùng; nếu cả 3 instance đều chờ instance khác chạy, task sẽ bị bỏ sót. Cache cluster, message queue, configuration center và distributed lock cũng gặp vấn đề tương tự: sau khi số node tăng lên, hệ thống phải có người quyết định “ai phụ trách việc gì”, “hiện tại ai còn sống” và “thay đổi lần này có hiệu lực theo thứ tự nào”.
