Помимо всего прочего эрланг крут тем не только, что он позволяет релоадить собственный код на лету, а так же тем, что он позволяет релоадить C-шные экстеншны на лету. В отличие от фреймворков на С =)
гугл тупо прибивает процессы. Если изначально было, скажем, 10 дублирующих процессов, то процедура обновления будет прибивать один за другим в режиме: прибил старый, запустил новый, подождал некоторое время и если автоматика считает, что процесс стартовал успешно, переходит к следующему.
А если при старте каждой машины нужно в память загрузить кучу каких-то данных? У нас, например, есть приложение, каждая нода которого стартует порядка 2-3 часов, выковыривая данные с диска и загружая их в память. А если этих нод несколько сотен хотя бы, сколько релизов в день получается сделать?
Если за две или три минуты процесс не загрузился, update считается неуспешным, и автоматически запускается старая версия. Т.е. такой ситуации, что нода грузится 3 часа не бывает.
Однако, это связано с тем, что приложение может пользоваться всякими сервисами в том же датацентре, которые данные могут отдавать быстро и с малой задержкой. Т.е. загружать эти данные именно к себе в память может и не потребоваться.
Ясно. Кстати, у нас эту же медленно загружающуюся штуку используют в том числе и ad-серверы, но у них данных не так много. Интересно бы посмотреть, как эта часть у гугла реализована, но увы :)
Причем, если подумать, то медленность этого in-memory хранилища у нас обусловлена именно особенностями копирования памяти в эрланге.
Он сам по себе очень быстрый и вообще без копирования памяти - но большие объемы таких данных загружаются в память очень долго. И после загрузки он фактически в readonly-режиме, с очень редкими обновлениями.
Reply
Reply
Reply
Reply
Однако, это связано с тем, что приложение может пользоваться всякими сервисами в том же датацентре, которые данные могут отдавать быстро и с малой задержкой. Т.е. загружать эти данные именно к себе в память может и не потребоваться.
Reply
Причем, если подумать, то медленность этого in-memory хранилища у нас обусловлена именно особенностями копирования памяти в эрланге.
Иронично :)
Reply
Reply
Reply
Reply
Leave a comment