8

Tôi cần phải thực hiện cân bằng chủ/nô lệ/tải vào một trang web hiện có.Làm thế nào để chuyển đổi Master/Slave, cân bằng tải trong CakePHP

Có ai sử dụng các triển khai này (hoặc khác) để chuyển đổi chính/nô lệ không?

Tài nguyên tôi tìm thấy về cách triển khai chế độ chính/nô lệ vào Bánh :.

tôi nhận được số 1) để làm việc nhất của thời đại nhưng nó có vấn đề với một số các tham gia.

Tôi hoan nghênh các nguồn mới, hacks hoặc mods để thực hiện chính/phụ như bây giờ tôi không thể có được đầu của tôi xung quanh nó.

(Bánh phiên bản tôi đang sử dụng atm là 1.2) (Tôi gửi bài này qua các nhóm google CakePHP của http://groups.google.co.uk/group/cake-php/browse_thread/thread/4b77af429759e08f)

+0

Tôi muốn tìm một hướng dẫn tốt về cách thức hoạt động, một số đồ thị, nhưng không phải cho Bánh, cho các ứng dụng tự xây dựng chung. – RobertPitt

Trả lời

1

Hãy xem hướng dẫn này liên quan đến Master/Slave trong vài nút.

http://www.howtoforge.com/setting-up-master-master-replication-on-four-nodes-with-mysql-5-on-debian-etch

Điều này có thể giúp bạn hiểu rõ hơn.

+0

Xin chào Robert, cảm ơn bạn đã liên kết. Điều tôi đang tìm kiếm là cụ thể cách triển khai master/slave dựa trên 3 nguồn mà tôi đã cung cấp hoặc một tổng số triển khai mới vào CakePHP. Dường như có một số khó khăn sâu hơn trong bánh. – Kana

0

Theo tôi có thể nói điều này xảy ra nếu mô hình của bạn có mối quan hệ với các mô hình không sử dụng cùng một hành vi. Hãy sửa tôi nếu giả định này sai.

Tất cả các mô hình đều có siêu dữ liệu, CakePHP tích lũy bằng cách sử dụng truy vấn DESCRIBE trên cơ sở dữ liệu, nếu dữ liệu này không có mặt thì các kết nối của bạn sẽ bị hỏng. Siêu dữ liệu này là cấu hình cơ sở dữ liệu cụ thể.

CakePHP sử dụng siêu dữ liệu này để điền thuộc tính $ this -> _ schema. Các tham gia SQL được xây dựng với dữ liệu từ thuộc tính $ this -> _ schema và tôi đoán đây là nơi mà vấn đề của bạn nằm, cơ sở dữ liệu được giới thiệu bởi hành vi chuyển đổi MasterSlave này không có bất kỳ siêu dữ liệu mô hình nào cho các bảng được liên kết với mô hình.

Giải pháp là cập nhật hành vi của bạn để nó chỉ chuyển đổi có chọn lọc khi đọc và ghi. Thêm hành vi này vào tất cả các mẫu liên quan. Ví dụ: Bất kỳ mô hình nào có liên quan đến việc sử dụng hasOne, hasMany vv cũng nên sử dụng cùng một hành vi.

Thực chất, tất cả các mô hình có liên quan nên ghi vào cùng một cơ sở dữ liệu và đọc từ cùng một cơ sở dữ liệu.

Tiền thưởng tiền thưởng của giải pháp này là bạn sẽ chia sẻ cùng một kết nối cơ sở dữ liệu.

0

ứng dụng web của bạn có vẻ là tầng đa, bạn cần phải mở rộng quy mô mỗi tầng riêng lẻ:

  • Lớp web, ví dụ:ứng dụng CakePHP tha có thể được trải rộng trên nhiều máy chủ web. Điều này rất dễ làm, vì bản thân mã là không đáng kể. Bạn nên xem xét làm thế nào để tải các máy chủ apache cân bằng, nó không phải là một việc lớn. Máy chủ web có thông lượng khá cao, vì vậy nếu bạn có một nút cổ chai ở đây, bạn có thể cải thiện chiến lược mã/bộ nhớ đệm của bạn thay thế. (Sử dụng memcache thay vì cache tệp chẳng hạn.) Nếu bạn phụ thuộc vào hệ thống tệp (tải lên chẳng hạn), điều này trở nên phức tạp hơn một chút, vì nó phải được phân phối hoặc tách biệt.

  • Lớp dữ liệu. Có nhiều hướng dẫn khác nhau về cách cân bằng/tải cân bằng MySQL đã được người khác liên kết.

Mặc dù trước tiên tôi khuyên bạn nên tạo điểm chuẩn. (Tối ưu hóa sớm là gốc rễ của tất cả các điều ác.) Bạn phải biết đầu tiên, nơi các nút cổ chai là, nơi thông lượng nên quy mô. Thông thường, bạn có thể tối ưu hóa truy vấn, lưu vào bộ nhớ cache hoặc tạo điều gì đó có thể lưu vào bộ nhớ cache ngay từ đầu. Bạn cũng phải rõ ràng về mục tiêu của mình: khả năng mở rộng? dung sai lỗi?

Các vấn đề liên quan