Приморский масштаб? - PullRequest
       37

Приморский масштаб?

22 голосов
/ 21 сентября 2009

Побережье известно как "еретическая сеть". Одним из пунктов, которые делают его еретическим, является то, что он имеет много общего состояния. Это, однако, что-то, что, в моем текущем понимании, мешает легкому масштабированию.

Рубин на рельсах, с другой стороны, делит как можно меньше состояний. Известно, что он довольно хорошо масштабируется, даже если он медленный по сравнению с современными смолками. flickr использует php и масштабируется до чрезвычайно большой инфраструктуры ...

Так есть ли у кого-нибудь опыт масштабирования Приморья?

Ответы [ 8 ]

16 голосов
/ 21 сентября 2009

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

Наслаждайтесь: -)

http://onsmalltalk.com/scaling-seaside-more-advanced-load-balancing-and-publishing http://onsmalltalk.com/scaling-seaside-redux-enter-the-penguin http://onsmalltalk.com/stateless-sitemap-in-seaside

14 голосов
/ 17 января 2011

Краткий ответ: Вы можете масштабировать приложения Seaside, такие как ад, да

Длинный ответ: В области ИТ масштабирование - это одно, но оно имеет два измерения:

  1. horozontal
  2. 1012 * вертикальный *

Почти все думали о масштабировании в вертикальном измерении. Так продолжалось до тех пор, пока intel и друзья не достигли некоторых физических барьеров и не начали добавлять ядра, чтобы компенсировать текущую невозможность добавления МГц.

Это когда все мы начали больше осознавать масштабирование по горизонтали как путь.

Почему я говорю вам это?

Потому что Seaside - это образ малого разговора, работающий на виртуальной машине, и это примерно то же самое, что система на сервере с одноядерным процессором.

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

Итак, если для масштабирования вы делаете то же самое, что и intel & friends, вы выбираете горизонтальный путь. И даже дешевле, чем вертикальный путь (который приведет вас к серверам IBM и Sun, которые стоят так же дорого, как и дорогие).

Приложения RoR обычно масштабируются по горизонтали. У Google есть бесчисленное множество дешевых серверов, чтобы делать свое дело. Он прекрасно работает, независимо от того, как драматизированные люди хотят произвести на вас впечатление, бросая в вас кучу незабываемых щебетаных китов.

Если они говорят с тобой об этом, просто будь вежлив и слышишь, что они говорят, но помни это:

  1. совершенный враг хорошего
  2. незаконченное совершенное никогда не будет таким ценным, как хорошо сделанное

Кстати, Amazon тоже делает что-то подобное (и это как бы объединяет геолокацию, поэтому они повышают шансы на удовлетворение ваших запросов в кластере, ближайшем к вашему местоположению).

С другой стороны, способ, которым Avi масштабировал dabbledb (компания веб-приложений на базе Seaside, купленная в твиттере), использовал одну виртуальную машину на учетную запись клиента (запуск и остановка учетных записей по требованию).

Наличие большого количества состояния на изображении не делает масштабирование невозможным или сложным.

Просто по-другому.

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

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

Мы разработали масштабируемый таким образом поток воздуха.

Это также экономически удобно, поскольку вы можете начать с очень малого N (в зависимости от ОЗУ вашего первого сервера) и увеличивать его по требованию, пока не достигнете аппаратного предела.

Как только вы достигнете аппаратного предела, вы просто добавляете другой хост в кластер и перенастраиваете балансировщик (и доступ к базам данных).

Простой, экономичный и элегантный.

9 голосов
/ 21 сентября 2009

http://dabbledb.com/, похоже, достаточно хорошо масштабируется. Кроме того, можно использовать GemStone GLASS для запуска Seaside.

8 голосов
/ 22 сентября 2009

Об этом интервью Ави Брайант, создатель DabbleDB, основателя Seaside and Co. Объясняет, как они делают это масштаб.

Из того, что я понимаю:

  • каждый клиент имеет свой писк Изображение.

  • Когда приходит клиент, Apache на основании имени пользователя принимает решение, на какой порт его отправлять.

  • На основе порта запускается Squeak Image клиента.

  • Таким образом, он может расти до бесконечного числа серверов.

Я думаю, что это решение работает для них, основываясь на специфике их приложения, и каждому клиенту не нужно делиться информацией между ними. Поэтому нет необходимости в o централизованной БД.

В любом случае, лучше смотреть интервью, чем мое недоделанное резюме.

6 голосов
/ 28 апреля 2010

Да, Побережье фантастически сокращается. Один разработчик может очень хорошо создавать и поддерживать сложные приложения для небольших групп.

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

5 голосов
/ 21 сентября 2009

Я бы немного перефразировал ваш вопрос: неужели Seaside мешает вам создавать приложения такого масштаба? Я бы сказал, обычно нет. У Seaside нет способа хранения ваших данных по умолчанию (так же, как у php его нет, хотя у Seaside есть несколько дополнительных опций), и мне кажется, что взаимодействие с вашими данными является самым большим препятствием в масштабировании .

Если вы хотите хранить ваши данные в монолитной базе данных SQL, как в случае с rails, вы можете сделать это. Или вы можете использовать объектную базу данных. Или вы можете использовать отдельную объектную базу данных для каждого пользователя, или отдельную базу данных для каждого проекта, или отдельную базу данных для каждого пользователя и проекта. Либо вы можете хранить все в виде плоских файлов, либо вы можете просто хранить данные в виде объектов в памяти вашей виртуальной машины.

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

Конечно, это не означает, что масштабирование бесплатное, это просто означает, что у вас есть больший домен для поиска решений для масштабирования.

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

Это только мои впечатления от чтения и общения с людьми.

2 голосов
/ 29 октября 2012

Я только что напомнил, что в истории успеха Pharo есть ссылка: Seaside Web-приложение с поддержкой до 1000 одновременно работающих пользователей для большой медицинской страховки в Аргентине.

Истории успеха Pharo

Отслеживание ошибок:

  • Балансировка нагрузки: Apache в качестве прокси / балансировщика (циклический перебор с сеансом) Сродство)
  • Настройка сервера: 5 образов Pharo на 3 разных серверах (Linux и Windows 2003)
  • GUI: в значительной степени на основе AJAX. Весь код, написанный на Smalltak: Seaside 3.0, интеграция Seaside JQuery и JQWidgetBox.
  • Постоянство: Glorp (OR mapper) и OpenDBX (клиент БД)
  • Базы данных: большие базы данных PostgreSQL и MS SQL Server
0 голосов
/ 21 сентября 2009

Из статьи Википедии, это полная свинья. До этого он не достиг такого уровня, чтобы я слышал об этом. :)

...