Mở rộng Joomla với cơ sở dữ liệu đọc chia tách


9

Tôi đã có một máy chủ mysql ở Bắc Mỹ (sử dụng Amazon RDS) và một bản sao đọc. Tôi cũng đã có một bản sao đọc cho một khu vực mới - Úc.

Máy chủ Úc bị chậm một cách tàn nhẫn do tính chất năng động của Joomla đọc ra máy chủ DB chính trong N <erica. Tôi đã cố gắng sử dụng proxy mysql cho việc này để phân chia việc đọc / ghi nhưng đó không phải là giải pháp lâu dài. Mysql proxy có vẻ đã chết một cách hiệu quả.

Tôi có những lựa chọn nào khác?

Câu trả lời:


2

Joomla (và các CMS tương tự khác) đã được phát triển cho kiến ​​trúc LAMP, với lưu trữ chung trong tâm trí. Ví dụ: Độ trễ thấp giữa máy chủ Web và Cơ sở dữ liệu.

Amazon RDS được thiết kế để mở rộng cơ sở dữ liệu quan hệ trong đám mây. Vì vậy, khi phân phối khu vực và dự phòng là rất quan trọng, dự kiến ​​sẽ có các khoản vay cao hơn.

Nếu bạn có yêu cầu cụ thể yêu cầu Amazon RDS, bạn có thể định cấu hình:

  • Joomla với một MySQL cục bộ để quản lý chung trang web (tài sản tĩnh, dễ nhân rộng)
  • Kết nối Amazon RDS, kết nối dành riêng cho ứng dụng cho sự phát triển của bạn

Các tiện ích mở rộng của bên thứ ba, được phát triển với độ trễ thấp, sẽ không hoạt động với Amazon RDS.


Không chắc chắn tôi hiểu hai điểm của bạn? Tôi sẽ tiếp tục sử dụng RDS, vì vậy bạn có đề xuất Master RDS ở Úc không? Ngoài ra tôi có thể chắc chắn y tận dụng kết nối RDS với bản sao đọc với các thành phần tùy chỉnh của mình nhưng không phải với lõi Joomla. Vì vậy, không chắc chắn những gì bạn có nghĩa là một kết nối dành riêng cho ứng dụng. Bạn có thể vui lòng giải thích?
Tom

2

Nếu bạn đang sử dụng một phiên bản PHP gần đây thì có lẽ bạn đang sử dụng trình điều khiển mys mysnd của php. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd có API plugin tùy chỉnh và có thể hoạt động theo cách tương tự là proxy mysql - ví dụ: http://pecl.php.net/package/mysqlnd_ms là một plugin phân tách đọc và ghi và có bản phát hành chính thức gần đây 9/2013

Cũng lưu ý, Joomla luôn ghi vào bảng phiên. Sử dụng memcache hoặc apc chỉ lưu trữ dữ liệu phiên trong bộ đệm - không phải siêu dữ liệu phiên.

Bạn có thể tăng hiệu suất tương tự bằng cách bỏ bảng #_simes của mình và tạo lại nó bằng cách sử dụng công cụ dữ liệu Bộ nhớ thay vì innodb hoặc myisam.


1

Mỗi trang được tạo bởi Joomla sẽ cần phải ghi vào bảng phiên.

Vì vậy, tôi sẽ đề nghị sử dụng memcache hoặc apc để quản lý phiên. Điều đó sẽ giúp bạn đạt được zero-write vào cơ sở dữ liệu, do đó đọc bản sao sẽ đủ cho hầu hết các trang.


Đó là điểm số tuyệt vời. Điều đó sẽ giúp ích cho việc ghi nhưng điều thực sự quan trọng là làm thế nào để tôi sử dụng bản sao đọc cho lõi của Joomla? Ngay bây giờ tôi chỉ thấy proxy mysql hoặc hack lõi là các tùy chọn. Tôi cho rằng HAproxy cũng là một lựa chọn nhưng điều đó không rõ ràng.
Tom

1. Bản thân AWS hỗ trợ sao chép ( aws.amazon.com/rds/faqs/#replication ) 2. Tùy chọn khác là sao chép tích hợp mysql
Shyam

Tôi nghĩ rằng bạn đang hiểu lầm. Tôi đã sử dụng bản sao với RDS. Câu hỏi của tôi là làm thế nào tôi có thể phân chia các hoạt động đọc Joomla thành bản sao đọc đó.
Tom

0

Một tùy chọn cải thiện tốc độ khác là đặt Nginx trước nó như một proxy ngược. Điều này sẽ làm giảm rất nhiều quyền truy cập cơ sở dữ liệu vì các trang phổ biến sẽ không bao giờ vào j Joomla và mysql Không thể tìm thấy cấu hình proxy nhưng đây là các thiết lập cơ sở

http://docs.j Joomla.org/Nginx

http://www.nginxtips.com/nginx-j Joomla-friendly-url /

/programming/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

https://stackoverflow.com/a/2655023/6096

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.