+4

KẾT HỢP LOAD BALANCER VÀ DATABASE REPLICATION TRONG CÙNG MỘT HỆ THỐNG

Như đã chia sẻ trong những bài viết trước, chúng ta đã biết Load BalancerDatabase Replication sẽ giúp cải thiện tính khả dụng (High Availability) của hệ thống.

Vậy nếu kết hợp chúng trong cùng một hệ thống thì sẽ như thế nào?

⚙️ LUỒNG HOẠT ĐỘNG

KẾT HỢP LOAD BALANCER VÀ DATABASE REPLICATION TRONG CÙNG MỘT HỆ THỐNG

Nhìn vào hình minh họa ở trên, các bạn sẽ thấy được luồng hoạt động như sau:

(1)+(2) Ban đầu người dùng muốn truy cập trang web thì sẽ vẫn thông qua DNS để phân giải tên miền ra được địa chỉ IP.

(3)+(4) Và cụ thể địa chỉ IP ở đây chính là IP của Load Balancer nằm trung gian giúp cân bằng tải, phân phối đều request đến các Web Server.

(5) Các thao tác ghi dữ liệu, ví dụ như các câu lệnh INSERT, UPDATE, DELETE, ... thì sẽ được Web Server kết nối với Master DB

(6) Còn các thao tác đọc dữ liệu, ví dụ như câu lệnh SELECT thì sẽ được Web Server kết nối với Slave DB

❌ SẼ RA SAO NẾU HỆ THỐNG CHỈ CÓ 1 SLAVE DB VÀ NÓ BỊ DOWN?

Nếu xui rủi trường hợp này xảy ra, thì các thao tác đọc dữ liệu sẽ được tạm thời chuyển đến Master DB để thực hiện.

Cho đến khi xử lý được sự cố, một Slave DB mới sẽ thay thế.

Sau đó nó copy dữ liệu từ Master DB sang và tiếp tục thực hiện công việc đọc dữ liệu của mình.

🚀 VẬY NÊN HÃY CÂN NHẮC NÂNG CẤP HỆ THỐNG ĐỂ CÓ KHẢ NĂNG DUY TRÌ NHIỀU SLAVE DB

Số lượng bao nhiêu Slave DB là đủ thì còn phải tùy từng dự án đánh giá, dựa trên nhiều yếu tố như lưu lượng truy cập, giới hạn tài nguyên, ...

Việc có nhiều Slave DB sẽ giúp cho trường hợp nếu 1 Slave DB bị down, thì các thao tác đọc dữ liệu sẽ dễ dàng được chuyển hướng đến các Slave DB đang hoạt động còn lại.

Và sau đó một Slave DB mới sẽ thay thế Slave DB bị down kia.

🤯 THẾ CÒN TRƯỜNG HỢP MASTER DB BỊ DOWN THÌ SAO?

Khi Master DB bị down, 1 trong số những Slave DB sẽ được chọn để trở thành Master DB mới.

Tất cả các thao tác ghi dữ liệu sau đó sẽ được thực hiện tạm thời trên Master DB mới.

Và một Slave DB mới cũng sẽ được thêm vào để thay thế Slave DB cũ, và copy dữ liệu ngay lập tức.

🛤️ THỰC TẾ TRIỂN KHAI

Trong các hệ thống thực tế, việc lựa chọn một Slave DB trở thành Master DB mới sẽ khá phức tạp, vì dữ liệu trong Slave DB được chọn đó có thể chưa cập nhật đầy đủ so với Master DB cũ. Dữ liệu bị thiếu cần phải được cập nhật bằng cách chạy các script khôi phục dữ liệu.

Mặc dù có một số phương pháp replication khác như sử dụng nhiều Master DB (multi-masters) hoặc Circular replication, nhưng đương nhiên để triển khai cũng sẽ phức tạp hơn.

Các bạn có thể research theo những từ khóa trên để tìm hiểu thêm nhé!


LỜI NHẮN

Bạn có thể tham khảo thêm những bài viết trong series "System Design - Thiết kế Hệ thống" của mình trên blog này nhé. Hi vọng kiến thức này hữu ích với bạn.

Follow mình trên Facebook "CLB Lập trình - THPT Ngọc Tảo" hoặc kênh Youtube "Tờ Mờ Sáng học Lập trình" để cùng nhau học tập, chia sẻ những kiến thức công nghệ và lập trình hoàn toàn miễn phí nhé!

Facebook CLB Lập trình - THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/

Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsangdev

Hẹn gặp lại 👋


BẠN CÓ THỂ ĐỌC THÊM

Clean Architecture: A Craftsman’s Guide to Software Structure and Design - Robert C. Martin

Designing Data – Insensitive applications - Martin Kleppmann

System Analysis and Design - Alan Dennis, Barbara Haley Wixom, Roberta M. Roth

System Design Interview - Alex Xu

Modern Systems Analysis and Design - Joseph Valacich, Joey George

Head First Design Patterns - Eric Freeman, Elisabeth Robson


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí