top of page

Read replica pattern (P2)

Xin chào, chúng ta có hai cách phổ biến để triển khai Read Replica Pattern:

  • Nhúng logic điều hướng vào code (tôi đã giải thích trong bài viết trước).

  • Sử dụng database middleware (cơ sở dữ liệu trung gian)

Hôm nay, chúng ta sẽ tập trung vào cách thứ hai. Middleware hoạt động như một bộ định tuyến giữa ứng dụng và cơ sở dữ liệu, điều hướng các câu lệnh truy vấn dữ liệu. Chúng ta có thể tùy chỉnh luồng điều hướng này để phù hợp với các quy tắc cụ thể, như dựa trên người dùng, schema, câu lệnh, vv.


Các bạn hãy quan sát sơ đồ sau:


  1. Khi Alice đặt một đơn hàng trên MFast.vn và yêu cầu được gửi đến Dịch vụ Đặt hàng (Oder Service).

  2. Dịch vụ Đặt hàng không tương tác trực tiếp với cơ sở dữ liệu, thay vào đó, nó gửi các truy vấn đến Database Middleware.

  3. Database Middleware trỏ các yêu cầu ghi đến cơ sở dữ liệu chính, dữ liệu được sao chép đến hai bản sao.

  4. Khi Alice xem chi tiết đơn hàng của mình (đọc). Yêu cầu được gửi thông qua Database Middleware.

  5. Nếu Alice muốn xem lịch sử đặt hàng gần đây (đọc), yêu cầu được gửi một lần nữa thông qua Database Middleware.

Database Middleware hoạt động như một trạm trung chuyển giữa ứng dụng và cơ sở dữ liệu. Nó sử dụng giao thức mạng chuẩn của MySQL để giao tiếp (HAProxy, MaxScale, and ProxySQL)


Ưu điểm:

- Đơn giản hóa cách lập trình. Ứng dụng không cần biết cấu trúc liên kết cơ sở dữ liệu ở bên dưới, không cần phải truy cập trực tiếp vào Primary DB hoặc Replica DB


- Khả năng tương thích tốt hơn. Database Middleware sử dụng giao thức mạng MySQL. Bất kỳ máy khách tương thích với MySQL nào cũng có thể kết nối với Database Middleware một cách dễ dàng. Điều này làm cho việc migrade cơ sở dữ liệu dễ dàng hơn.


Nhược điểm:

- Làm tăng độ phức tạp của hệ thống. Database Middleware là một hệ thống phức tạp. Vì tất cả các truy vấn đều đi qua Database Middleware nên nó thường yêu cầu thiết lập tính sẵn sàng cao (High Availability) để tránh một điểm lỗi duy nhất.


- Thêm 1 lớp trung gian có nghĩa là thêm độ trễ vào hệ thống. Do đó, lớp này đòi hỏi hiệu suất phải cao và ít độ trễ.


Subscribe to ctovietnam.org


Comments


bottom of page