Масштабування Joomla за допомогою розділення баз даних для читання зчитування


9

У мене є сервер mysql в Північній Америці (використовуючи Amazon RDS) і репліка для читання. У мене також є репліка для читання для нового регіону - Австралії.

Австралійський сервер жорстоко повільний через динамічний характер зчитування Joomla з головного сервера БД в N.America. Я намагався використовувати проксі-сервер mysql для цього, щоб розділити читання / запис, але це не довгострокове рішення. Проксі-сервер Mysql виглядає ефективно мертвим.

Які ще є варіанти?

Відповіді:


2

Joomla (та інші подібні CMS) були розроблені для архітектури LAMP, маючи на увазі загальний хостинг. Наприклад, низька затримка між веб-сервером та базою даних.

Amazon RDS призначений для масштабування реляційної бази даних у хмарі. Отже, оскільки важливі регіональний розподіл та надмірність, очікуються більш високі дозволи.

Якщо у вас є специфічні вимоги щодо запису Amazon RDS, ви можете налаштувати:

  • Joomla з локальним MySQL для загального управління сайтом (статичні активи, легко копіювати)
  • Підключення Amazon RDS - підключення для вашої розробки

Сторонні розширення, розроблені з низькою затримкою, не працюють з Amazon RDS.


Не впевнений, що я розумію ваші два моменти? Я продовжую використовувати RDS, тому ви пропонуєте Master RDS в Австралії? Також я можу певно використовувати RDS-з'єднання з репліками читання за допомогою моїх спеціальних компонентів, але не з ядром Joomla. Тож не впевнені, що ви маєте на увазі підключення, яке залежить від програми. Чи можете ви, будь ласка, докладно?
Том

2

Якщо ви використовуєте пристойно останню версію PHP, ви, ймовірно, використовуєте драйвер php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd має користувальницький API плагінів і може функціонувати так само, як і проксі-сервер mysql - наприклад, http://pecl.php.net/package/mysqlnd_ms - плагін, який розбиває читання та запис, і останній офіційний реліз 9/2013

Також майте на увазі, Joomla завжди пише до сесійного столу. Використання memcache або apc просто зберігає дані сеансу в кеші - не метадані сеансу.

Ви можете отримати таке ж підвищення продуктивності, скинувши таблицю #_sesions і відтворивши її за допомогою механізму даних пам'яті замість innodb або myisam.


1

Кожну сторінку, створену Joomla, потрібно буде записати до сесійного столу.

Тому я б запропонував використовувати memcache або apc для управління сеансами. Це повинно допомогти вам домогтися запису в базу даних, отже, для більшості сторінок репліка буде достатня.


Це відмінний момент. Це допоможе при написанні, але що насправді важливо, як я використовую читання-репліку для ядра Joomla? Зараз я бачу лише проксі-сервер mysql або злом ядра як параметри. Я вважаю, що HAproxy також є варіантом, але це не так зрозуміло.
Том

1. AWS сам підтримує реплікацію ( aws.amazon.com/rds/faqs/#replication ) 2. Інший варіант - вбудована реплікація mysql
Shyam,

Я думаю, ви нерозумієте. Я вже використовую реплікацію з RDS. Моє запитання - як я можу розділити операції читання Joomla на репліку читання.
Том

0

Іншим варіантом підвищення швидкості буде поставити Nginx перед ним як зворотний проксі. Це зменшило б багато доступу до бази даних, оскільки загальні сторінки ніколи не переходитимуть до joomla, а mysql Не може знайти конфігурацію проксі, але це базові настройки

http://docs.joomla.org/Nginx

http://www.nginxtips.com/nginx-joomla-friendly-url/

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.