Какая CMS может обрабатывать страницы с нескольких хостингов?

Наша компания довольно успешно управляет своим веб-сайтом, включая всю бизнес-логику и прочее. Однако существует также множество страниц со статическим контентом, которые сегодня обслуживаются с использованием системы шаблонов, которая хранит контент в сериализованных объектах PHP в файловой системе.

Сейчас мы рассматриваем возможность использования «настоящей» CMS, однако у нас есть некоторые требования, которые позволяют более или менее разобраться со всеми обычными подозреваемыми. Самым важным требованием является наша хостинговая среда:

У нас есть два совершенно разных хостинга с подходом «ничего не делить» для аварийного переключения. В обоих местах есть отдельные экземпляры MySQL, которые являются подчиненными () нашей главной базы данных, которая находится на месте в нашей штаб-квартире. В обоих местах есть определенное количество веб-серверов, на каждом из которых хранится весь веб-сайт (опять же, для переключения при отказе).

Из этой архитектуры естественным образом вытекают два возможных подхода: - CMS, управляемая базой данных, которая управляется в нашей штаб-квартире и реплицируется на места нашего хостинга (а также изображения и прочее, которые реплицируются с использованием нашего процесса синхронизации файлов) - CMS, управляемая файлами в котором не только вложения, но и файлы содержимого синхронизируются с помощью нашей синхронизации файлов

Подход, основанный на базе данных, кажется мне более гибким, однако мы не смогли найти CMS, которая работала бы по принципу «локально администрировать базу данных для чтения / записи и обслуживать контент, используя только ведомое устройство, доступное только для чтения». Например, обычному подозреваемому (Typo3) требуется база данных для записи в журнал и управление сеансами, поэтому это не вариант. Другие CMS, похоже, разделяют эту проблему.

Итак, короче говоря, существует ли CMS (PHP / MySQL-), которая может справиться с этим? Какие-либо предложения?

Дополнительные баллы, если CMS может легко интегрироваться с нашими приложениями Zend Framework (или наоборот).


person Dan Soap    schedule 24.07.2012    source источник
comment
В вашем приложении написание не важно? Это должно быть потому, что в противном случае концепция наличия одной главной базы данных создает прямую единую точку отказа? Если вы подробнее объясните, как работает ваш сайт, мы сможем ответить лучше. Так это что-то вроде Facebook с большим количеством писем или больше похоже на новостной веб-сайт, например, где небольшие группы публикуют относительно небольшое количество новостей по сравнению с просмотрами?   -  person Luc Franken    schedule 24.07.2012
comment
Основной целью веб-сайта можно считать веб-сайт электронной коммерции, мы продаем свою продукцию потребителям. Однако CMS планируется для новостных страниц, страниц с рекламой продуктов и т.п. Записи происходят очень редко, на большинстве страниц отображается только контент.   -  person Dan Soap    schedule 24.07.2012


Ответы (2)


Вам следует изучить Percona, компанию, занимающуюся производительностью MySQL, которая поставила MySQL на стероиды. Они легко поддерживают среду Master / Master / Master и могут легко достичь этого без необходимости изменять значения автоинкремента от мастера к мастеру.

У них есть продукт под названием XtraDB Cluster. Это бесплатный продукт, работает так же, как MySQL, устанавливается таким же образом, но обрабатывает кластеризацию на уровне БД и делает чертовски хорошую работу.

Когда ваша БД окажется под контролем, вы можете установить CMS на один из серверов, внести изменения, скопировать ее на все другие серверы, и вся ваша среда будет готова к аварийному переключению.

person Mike Mackintosh    schedule 24.07.2012
comment
Спасибо за предложение, однако установка Master / Master / Master не является нашей целью, так как она будет включать в себя соединение между нашими местами размещения. Этого мы хотим избежать (почти) любой ценой. - person Dan Soap; 24.07.2012
comment
Другой подход, который я мог бы предложить, заключается в том, что если вы уверены, что ваша база данных штаб-квартиры никогда не выйдет из строя, исключите ее из уравнения в спутниковых местоположениях и просто настройте свою CMS (любую CMS) для связи с базой данных штаб-квартиры. Вы не должны испытывать никаких задержек, которые ухудшат взаимодействие с пользователем, но это позволяет вам размещать файлы в другом месте, но при этом обслуживать те же данные. - person Mike Mackintosh; 24.07.2012
comment
На самом деле это у нас было с нашим вспомогательным веб-сайтом: созданный сторонним агентством, у нас была установка, которая включала один экземпляр базы данных в нашей штаб-квартире для чтения и записи даже из спутниковых местоположений - производительность была, дружески говоря, беспорядочной. - person Dan Soap; 24.07.2012
comment
Не углубляясь слишком глубоко в эту (интересную) тему, разве предложение sixeightzero не включает также master/slave/slave архитектуру, которая может приблизиться к вашим потребностям? Как правило, я бы рекомендовал адаптировать вашу архитектуру к стандартной настройке репликации. Все остальное будет рассматриваться как индивидуальное решение, дорогостоящее в обслуживании. Только мои два цента, потенциально как-то поверхностное заявление;). - person Mateng; 02.08.2012

Согласно добавленной информации в вашем комментарии, похоже, что мы говорим о статическом контенте.

Существующие системы

Насколько я понимаю, у вас уже есть стабильная система, которая может развертывать статический контент. В этом смысле нет смысла создавать более сложные ситуации. Сохраняйте простоту, и в большинстве случаев это будет работать лучше всего, когда это соответствует вашим потребностям.

В зависимости от ваших потребностей вы можете сделать выбор между синхронизацией вашей базы данных или синхронизацией файлов.

Синхронизация файлов

Если вы можете отправить все полностью статично, синхронизация файлов будет работать хорошо. Хотя я вижу здесь проблему. Например: если вам нужен список последних новостей, вам также придется его сгенерировать и синхронизировать. Когда вы используете синхронизацию базы данных, вы можете просто выполнить простой запрос, необходимый SELECT * FROM news ORDER BY created_at DESC LIMIT 0,10.

Количество действий синхронизации

Другой момент - это объем синхронизации, который вам необходимо выполнить. Если у вас есть экран, например, с 10 новостями в вашем бэкэнде. Писатель создал 3 сообщения и начинает нажимать кнопку публикации для каждого из них. В основном ваша синхронизация файлов начнется после первой. Поэтому сначала нужно синхронизировать новую новость. Затем он должен обновить список последних новостей, а затем синхронизировать его.

Это может быть плохо, если они начнут редактировать достаточно хорошо. Потому что это тоже нужно сделать, например, при смене названия.

Решение для базы данных

Вот где база данных лучше, вы просто обновляете запись, и она туда попадает. Раздел последних новостей обновится, когда станет доступна новая запись.

Проблема со связанным статическим содержанием

Теперь у вас есть одна проблема: вы должны убедиться, что ваш процесс состоит из 2 этапов: 1. Синхронизация изображений и другого статического контента. 2. Синхронизация и / или публикация новости.

В противном случае вы увидите битые изображения. Это можно сделать, например, следующим образом: Убедитесь, что синхронизация нового изображения начинается напрямую. Итак, когда он загружен в CMS. Тогда он будет там до того, как новость будет опубликована. Вы можете проверить это в зависимости от ваших потребностей.

Альтернативы

Поскольку это статический контент, вы сможете обработать его немного лучше. Это потребует новой технологии в вашем стеке, поэтому сначала проверьте, действительно ли она нужна. Новость - это рабочий процесс. Итак, у него есть ступеньки рядом друг с другом. В общем, для рабочего процесса вы можете использовать очереди. Таким образом, вы создаете очередь с новыми новостями, очередь для публикации, очередь для синхронизации статических элементов и т. Д.

Очереди неплохо работают с системами кеширования. И, я думаю, есть довольно интересная часть, которую стоит рассмотреть. В настоящее время доступны мощные системы кэширования, которые могут сделать контент доступным и синхронизировать его. Они основаны на том факте, что у вас много серверов, обслуживающих один и тот же контент. Они могут быть очень стабильным и простым решением для выполнения вашей работы. Но, как уже говорилось, если у вас их еще нет, подумайте, хотите ли вы добавить новую сложность в свой стек.

person Luc Franken    schedule 25.07.2012