Приморский масштаб?
Побережье известно как "еретическая сеть". Одним из пунктов, которые делают его еретическим, является то, что он имеет много общего состояния. Это, однако, в моем нынешнем понимании препятствует легкому масштабированию.
Ruby on rails, с другой стороны, делит как можно меньше состояний. Известно, что он довольно хорошо масштабируется, даже если он медленный по сравнению с современными смолками. flickr использует php и масштабируется до чрезвычайно большой инфраструктуры...
Так есть ли у кого-нибудь опыт масштабирования Приморья?
8 ответов
Короткий ответ: вы можете масштабировать приложения Seaside, такие как ад, да
Длинный ответ: в области ИТ масштабирование - это одно, но оно имеет два измерения:
- horozontal
- вертикальный
Почти все думали о масштабировании в вертикальном измерении. Так продолжалось до тех пор, пока intel и друзья не достигли некоторых физических барьеров и не начали добавлять ядра, чтобы компенсировать текущую невозможность добавления МГц.
Вот когда все мы начали больше осознавать масштабирование по горизонтали как путь.
Почему я говорю тебе это?
Потому что Seaside - это образ малого разговора, работающий на виртуальной машине, и это примерно та же ситуация, что и система на сервере с одноядерным процессором.
Принимая это за основу, вы масштабируете веб-приложения, создав кластер серверов. Это естественная вещь, это отказоустойчивая вещь, топологически разумная вещь, гибкая вещь, я думаю, вы поняли идею...
Так что, если для масштабирования вы делаете то же самое, что и intel & friends, вы выбираете горизонтальный путь. И даже дешевле, чем вертикальный путь (который приведет вас к серверам IBM и Sun, которые стоят так же дорого, как и дорогие).
Приложения RoR обычно масштабируются по горизонтали. У Google есть бесчисленное множество дешевых серверов, чтобы делать свое дело. Он прекрасно работает, независимо от того, как драматизированные люди хотят произвести на вас впечатление, бросая в вас кучу незабываемых щебетаных китов.
Если они говорят с тобой об этом, ты просто будь вежлив и слышишь, что они говорят, но помни это:
- совершенен враг хорошего
- Незаконченное совершенное никогда не будет таким ценным, как хорошо сделанное
Кстати, Amazon тоже делает что-то подобное (и это своего рода геолокация пары, поэтому они повышают шансы на удовлетворение ваших запросов в кластере, который находится ближе всего к вашему местоположению).
С другой стороны, способ, которым Avi масштабировал dabbledb (компания веб-приложений Seaside, купленная в твиттере), использовал одну виртуальную машину на учетную запись клиента (запуск и закрытие учетных записей по требованию).
Наличие большого количества состояния в изображении не делает масштабирование невозможным или сложным.
Просто другой.
Это можно сделать с помощью балансировщика нагрузки, который использует липкие сеансы, чтобы вы могли иметь одно изображение, удовлетворяющее всем запросам пользовательского сеанса. Вы делаете вещи так, чтобы любой рабочий-образ за балансировщиком нагрузки мог посещать любого пользователя данного приложения. И это в значительной степени так.
Для этого вам нужно делиться постоянными объектами между работниками. Все базы данных пользователей должны быть доступны работникам в любое время и должны иметь дело с параллелизмом.
Мы разработали масштабируемый таким образом поток воздуха.
Это также экономически удобно, потому что вы можете начать с очень малого N (в зависимости от ОЗУ вашего первого сервера) и увеличивать его по требованию, пока не достигнете аппаратного предела.
Как только вы достигнете аппаратного предела, вы просто добавляете другой хост в кластер и перенастраиваете балансировщик (и доступ к базам данных).
Просто, экономично и элегантно.
Рамон Леон в своем (превосходном) блоге рассказывает о своем опыте по расширению побережья. Вы можете прочитать очень конкретные идеи с примером кода о настройке и настройке побережья.
Наслаждаться:-)
http://onsmalltalk.com/scaling-seaside-more-advanced-load-balancing-and-publishing http://onsmalltalk.com/scaling-seaside-redux-enter-the-penguin http://onsmalltalk.com/ без гражданства-карта сайта-в-море
http://dabbledb.com/ кажется, масштабируется довольно хорошо. Кроме того, можно использовать GemStone GLASS для запуска Seaside.
В этом интервью Ави Брайант, создатель Seabide and Co, основатель DabbleDB, объясняет, как они делают его масштабируемым.
Из того, что я понимаю:
У каждого клиента есть свой собственный Squeak Image.
Когда приходит клиент, Apache решает, основываясь на имени пользователя, на какой порт его отправлять.
На основе порта запускается Squeak Image клиента.
Таким образом, он может расти до бесконечного количества серверов.
Я думаю, что это решение работает для них, основываясь на специфике их приложения, и каждому клиенту не нужно делиться информацией между ними. Поэтому нет необходимости в o централизованной БД.
В любом случае, лучше смотреть интервью, чем мое недоделанное резюме.
Да, Побережье сказочно сокращается. Один разработчик может очень хорошо создавать и поддерживать сложные приложения для небольших групп.
[возвращаясь к этому через несколько лет] Это на самом деле гораздо важнее, чем расширение. Скорость работы компьютера все еще сильно возрастает, и 99% всех приложений теперь могут работать на одной машине. Скорость разработки, и особенно техническое обслуживание, в настоящее время полностью доминирует в TCO
Я бы немного перефразировал ваш вопрос следующим образом: Seaside мешает вам создавать приложения такого масштаба? Я бы сказал, обычно нет. У Seaside нет способа хранения ваших данных по умолчанию (так же, как у php его нет, хотя у Seaside есть несколько дополнительных опций), и мне кажется, что взаимодействие с вашими данными является самым большим препятствием, когда дело доходит до масштабирования.,
Если вы хотите хранить ваши данные в монолитной базе данных SQL, как с rails, вы можете сделать это. Или вы можете использовать объектную базу данных. Или вы можете использовать отдельную объектную базу данных для каждого пользователя, или отдельную базу данных для каждого проекта, или отдельную базу данных для каждого пользователя и проекта. Либо вы можете хранить все в виде последовательных файлов, либо вы можете просто хранить свои данные в виде объектов в памяти вашей виртуальной машины.
И из-за продолжения вам не нужно повторно извлекать данные из хранилища данных при каждом вызове веб-страницы. Как и при использовании настольного приложения, вы можете извлекать данные из хранилища данных, когда ваш пользователь начинает с ним взаимодействовать, устанавливать соответствующие переменные, а затем использовать эти переменные между вызовами до тех пор, пока пользователь не закончит работу с данными, и в этот момент вы сможете обновить данные. хранилище данных. Если вы не делитесь информацией о состоянии, вы должны обращаться к хранилищу данных при каждом веб-вызове.
Конечно, это не означает, что масштабирование бесплатное, это просто означает, что у вас есть большой домен для поиска решений для масштабирования.
Тем не менее, для многих приложений рельсы будут масштабироваться намного проще просто потому, что существуют большие хостинговые решения для рельсов (и php в этом отношении), которые предложат вам огромное количество ресурсов без необходимости арендовать и настраивать нестандартную коробку.
Это только мои впечатления от чтения и общения с людьми.
Я только что напомнил, что есть ссылки на истории успеха Pharo: Seaside Web-приложение с до 1000 одновременно работающих пользователей для крупной медицинской страховки в Аргентине.
Отслеживание Иссис:
- Балансировка нагрузки: Apache как прокси / балансировщик (циклический перебор с привязкой к сеансу)
- Настройка сервера: 5 образов Pharo на 3 разных серверах (Linux и Windows 2003)
- GUI: в значительной степени на основе AJAX. Весь код написан на Smalltak: Seaside 3.0, интеграция Seaside JQuery и JQWidgetBox.
- Постоянство: Glorp (OR mapper) и OpenDBX (клиент БД)
- Базы данных: большие базы данных PostgreSQL и MS SQL Server
Из статьи Википедии, это полная свинья. До этого он не достиг такого уровня, чтобы я слышал об этом.:)