- vừa được xem lúc

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

0 0 9

Người đăng: Tờ Mờ Sáng học Lập trình

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 127

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 49

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 101

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 918

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 37

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 67