2009-11-17 5 views
0

Я собираюсь создать высокопроизводительный веб-сервис. Он должен использовать базу данных (или любую другую систему хранения), некоторый язык обработки (либо сценарий, либо нет), и демон web-сервера. Система должна быть распределена на большое количество серверов, чтобы служба работала быстро и надежно.(* nix) Облачные/кластерные решения для быстрого и масштабируемого веб-сервиса

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

Какие кластерные/облачные решения я должен принять для рассмотрения?

Существует много односистемных изображений (SSI), файловых систем с кластерами (может быть частью дизайна), таких проектов, как Hadoop, BigTable clones и многие другие. У каждого есть свои плюсы и минусы, а на странице «about» всегда говорится, что решение отлично :) Если вы попытались развернуть что-то, что касается темы - поделитесь своим опытом!

UPD: Это не файл, а не игра, а нечто довольно интерактивное. Вы можете взять StackOverflow в качестве примера веб-сервиса: небольшие фрагменты данных, полустатический контент, интенсивные операции с базами данных.


Cross-Post on ServerFault

+0

Вероятно, вы должны быть более конкретным в своем вопросе, иначе вы можете получить без ответов. – jldupont

+0

«Чтобы правильно задать вопрос, нужно знать хотя бы половину ответа» (с), поэтому вопрос довольно общий :) Я понимаю, что существует множество решений для разных целей, и я не получит правильного ответа. Однако, в качестве отправной точки, будет приятно услышать некоторый обмен опытом в создании ЛЮБЫХ веб-сервисов на кластерах. Позже, Googling поможет с дополнительной информацией :) – kolypto

ответ

1

Вам действительно нужно лучшее определение «большой». Является ли «большой» устремлением, или у вас есть твердые цифры, которые ваш отдел маркетинга считает, что они будут на борту?

Если вы можете сделать это с использованием простых компонентов, сделайте это. Такие, как Cassandra и Hadoop, нелегко настроить (особенно позже) или разработать; разработчики, которые будут иметь возможность разрабатывать такое приложение, будут очень дорогими и трудными в найме.

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

Помните, что переполнение стека использует довольно обычные компоненты, просто хорошо настроенные с небольшим количеством товарного оборудования. Это хорошо для его масштаба, но никогда не будет работать (например, Facebook), но разработчики знали, что аудитория SO никогда не достигнет уровня Facebook.

РЕДАКТИРОВАТЬ:

Когда "традиционные" методы начинают неудачу, например, вы достигаете предела того, что может быть сделано на одном экземпляре базы данных, тогда вы можете рассмотреть возможность очерчивания или выполнения функционального разбиения на несколько экземпляров (опять же с выбором системы HA).

Единственный раз, когда вам понадобится одна из этих систем (например, Cassandra) «nosql», если у вас есть однородное хранилище данных с очень высоким требованием к записи и требованием доступности; даже тогда вы, вероятно, все же могли бы решить это путем ошпаривания обычных систем - как это делали другие (даже Facebook).

+0

Вот почему я рекомендовал Appengine, его легче разрабатывать и масштабировать гораздо легче. Также цена очень хорошо! – Martin

1

Это трудно сделать конкретные рекомендации, так как вы были немного расплывчатым, но я бы рекомендовал Google Appengine для практически любой веб-сервис. Он надежный, простой в использовании и построен на архитектуре google, поэтому он быстрый и надежный.

+0

Я должен представить, что OP хотел разместить его на своей собственной инфраструктуре. Также облачный материал имеет (как правило) отсутствие SLA и слабую латентность и производительность в целом. – MarkR

+0

Возможно, они это сделали, но я бы по-прежнему рекомендовал Appengine над любыми решениями для дома. – Martin

+0

Я бы сказал, что он не быстрый и не надежный. Я не могу спорить с «шкалами хорошо». Интересно, экономически ли это? На самом деле мы этого не очень расследовали. – MarkR

0

Я хотел бы рекомендовать стратоскальную симфонию. это частный облачный сервис, который делает все это. все, что вы только что упомянули, - эта услуга отлично. их симфонические продукты обеспечивают общий облачный опыт в вашем корпоративном центре обработки данных. если это то, что вы ищете, я предлагаю вам сделать снимок