Системное администрирование → Балансировщик нагрузки для Amazon EC2 c автомасштабированием из песочницы
Многие знают, что Amazon предоставляет возможность автоматически наращивать мощность вашего пула (увеличивать количество виртуальных серверов) в зависимости от нагрузки. Однако я не сумел найти в русскоязычном сегменте сети толкового описания практической реализации такой схемы. Рискну представить на суд общественности итог моих штудий на данную тему.
Итак, вводные данные. Наш сервер, судя по кривой посещаемости, в скором времени начнёт испытывать весьма суровые нагрузки, особенно в пиковые моменты. Для эффективной обработки трафика, а также во избежание отказов в обслуживании было решено использовать механизмы, предоставляемые Amazon, позволяющие в реальном времени запускать необходимое количество серверов. При этом, когда нагрузка спадает, получившийся пул должен «сбавлять обороты», автоматически уменьшаясь в размерах, и тем самым уменьшать финансовые затраты на проект.
Итак, вводные данные. Наш сервер, судя по кривой посещаемости, в скором времени начнёт испытывать весьма суровые нагрузки, особенно в пиковые моменты. Для эффективной обработки трафика, а также во избежание отказов в обслуживании было решено использовать механизмы, предоставляемые Amazon, позволяющие в реальном времени запускать необходимое количество серверов. При этом, когда нагрузка спадает, получившийся пул должен «сбавлять обороты», автоматически уменьшаясь в размерах, и тем самым уменьшать финансовые затраты на проект.
JAVA → Высокопроизводительный NIO-сервер на Netty из песочницы
Преамбула
Здравствуйте. Я являюсь главным разработчиком крупнейшего в СНГ сервера Minecraft (не буду рекламировать, кому надо, те знают). Уже почти год мы пишем свою реализацию сервера, рассчитанную на больше чем 40 человек (мы хотим видеть цифру в 500 хотя бы). Пока всё было удачно, но последнее время система начала упираться в то, что из-за не самой удачной реализации сети (1 поток на ввод, 1 на вывод + 1 на обработку), при 300 игроках онлайн работает более 980 потоков (+ системные), что в сочетании с производительностью дефолтного io Явы даёт огромное падение производительности, и уже при 100 игроках сервер в основном занимается тем, что пишет/читает в/из сети.
Поэтому я решила переходить на NIO. В руки совершенно случайно попала библиотека Netty, структура которой показалась просто идеально подходящей для того, чтобы встроить её в уже готовое работающее решение. К сожалению, мануалов по Netty мало не только на русском, но и на английском языках, поэтому приходилось много экспериментировать и лазить в код библиотеки, чтобы найти лучший способ.
Здесь я постараюсь расписать серверную часть работы с сетью через Netty, может быть это кому-то будет полезно.
Блог компании ВымпелКом (Билайн) → ЦОД в Ярославле: воплощение мечты последних пяти лет
«Билайну» нужно очень много вычислительной мощности для работы. Идея построить большой ЦОД и решить проблемы роста на 10 лет вперед витала с 2005 года. Я вкратце расскажу о том, с какими сложностями мы столкнулись, когда раздумывали о новом крупном объекте.

Новый дата-центр
Первая проблема была в соотношении результатов и цен. Понятно, что строить ЦОД в Москве около уже имеющегося хочется, но не настолько сильно, чтобы тратить реально крупные суммы на строительство, и энергообеспечение. Поначалу мы отсмотрели около 30 объектов в Москве и области, но потом пришли к выводу, что экономически более обосновано строить где-то поблизости от столичного региона, но не непосредственно в нём. Тут есть ещё сложность: между ЦОД в Москве и новым ЦОД не должно быть больше 200 километров оптоволокна, иначе скорость света уже существенно скажется на лагах при синхронной репликации. Параллельно мы купили новые модели дисковых массивов и получили возможность протестировать асинхронную репликацию. Так стало понятно, что географически разносить центры можно.

Новый дата-центр
Сильнее, выше, быстрее, дешевле
Первая проблема была в соотношении результатов и цен. Понятно, что строить ЦОД в Москве около уже имеющегося хочется, но не настолько сильно, чтобы тратить реально крупные суммы на строительство, и энергообеспечение. Поначалу мы отсмотрели около 30 объектов в Москве и области, но потом пришли к выводу, что экономически более обосновано строить где-то поблизости от столичного региона, но не непосредственно в нём. Тут есть ещё сложность: между ЦОД в Москве и новым ЦОД не должно быть больше 200 километров оптоволокна, иначе скорость света уже существенно скажется на лагах при синхронной репликации. Параллельно мы купили новые модели дисковых массивов и получили возможность протестировать асинхронную репликацию. Так стало понятно, что географически разносить центры можно.
Персональные блоги → Основные тезисы конференции HighLoad++ 2011
В октябре 2011 года в Москве проходила ежегодная конференция разработчиков высоконагруженных проектов HighLoad++. Решил поделиться с читателями основными тезисами с конференции. Поскольку вся информация открыта и доступна на странице конференции, решил что собрать все тезисы вместе будет не такой уж и плохой затеей. Сразу отмечу, что в отчёте не содержится детальной информации о каждом докладе — затронуты лишь ключевые моменты.
Итак, о чём говорилось на HighLoad++ 2011.
Yii — php-фреймворк → Шардинг MySQL на Yii Framework
Начну с того, что наш проект находится на начальной стадии развития, а его запуск планируется на 1е ноября. И, чтобы сразу отсечь всю возможную критику касаемо преждевременной оптимизации, скажу, что перед командой была поставлена задача разработать приложение, справляющееся с резкими скачками нагрузки (от 1000 до 50000 и т. п.). В связи с этим было решено закладывать хорошо масштабируемую архитектуру, позволяющую легко и быстро увеличивать производительность системы за счет аппаратной части (по принципу scale-out).Node.JS → Node: Масштабирование в малом против масштабирования в целом
Последние несколько недель я использую все свободное время, которое могу найти, чтобы обдумать, какие технологии мы будем использовать, чтобы реализовать первую версию BankSimple. Многие люди, вероятно, предположат, что я сразу же предпочёл Scala, в связи с тем, что я был соавтором книги об этом языке, но я подхожу к решению инженерных задач совершенно иначе. Каждая проблема имеет соответствующий набор применяемых технологий, и задача разработчика, — обосновать необходимость их использования.
(Кстати, Scala, может быть, хорошо подходит для BankSimple, в немалой степени из-за большого количества стороннего кода на Java, с которым мы должны интегрироваться, но это уже совсем другая тема для блога, и даже, скорее всего, для совершенно другого блога).
Одной из самых обсуждаемых технологий среди Hacker News является Node, окружение для разработки и запуска событийно-управляемых приложений JavaScript на виртуальной машине V8. В рамках выбора технологий для реализации проекта я выполнил оценку Node. Вчера я выразил некоторый общий скепсис относительно Node, и автор этого окружения, Райан Дал, попросил, чтобы я изложил свои мысли более подробно. Так вот, приступаю.
(Кстати, Scala, может быть, хорошо подходит для BankSimple, в немалой степени из-за большого количества стороннего кода на Java, с которым мы должны интегрироваться, но это уже совсем другая тема для блога, и даже, скорее всего, для совершенно другого блога).
Одной из самых обсуждаемых технологий среди Hacker News является Node, окружение для разработки и запуска событийно-управляемых приложений JavaScript на виртуальной машине V8. В рамках выбора технологий для реализации проекта я выполнил оценку Node. Вчера я выразил некоторый общий скепсис относительно Node, и автор этого окружения, Райан Дал, попросил, чтобы я изложил свои мысли более подробно. Так вот, приступаю.
Node.JS → Nodeload2: Механизм загрузок — Перезагрузка
Nodeload, первому проекту команды GitHub, выполненному с использованием node.js, недавно исполнился 1 год. Nodeload, — это тот сервис, который упаковывает содержимое Git-репозитория в ZIP-архивы и тарболы. С тех пор нагрузка на сервис росла в течение года, и мы столкнулись с различными проблемами. Почитайте о происхождении Nodeload, если вы не помните, почему это работает так, как работает сейчас.
По существу, у нас стало слишком много запросов, проходящих через один сервер nodeload. Эти запросы запускали процессы
По существу, у нас стало слишком много запросов, проходящих через один сервер nodeload. Эти запросы запускали процессы
git archive, которые запускали SSH-процессы для общения с файловыми серверами. Эти запросы постоянно записывали гигабайты данных, а также передавали их через nginx. Одной простой идеей было заказать больше серверов, но это создало бы дубликат кэша заархивированных репозиториев. Я хотел избежать этого, если возможно. Итак, я решил начать все сначала и переписать Nodeload с нуля.
MySQL → ALTER очень больших таблиц в MySQL
Если в Вашем проекте есть таблицы размер которых исчисляется гигабайтами, а для того чтобы поменять структуру такой таблицы вам на несколько часов приходится останавливать все сервисы — эта статья будет для Вас.
Дано: таблица размером в несколько десятков гигабайт данных. Задача — изменить структуру таблицы.
Дано: таблица размером в несколько десятков гигабайт данных. Задача — изменить структуру таблицы.
Блог компании Evernote Corporation → Обзор архитектуры сервиса Evernote

Как и обещали, мы начали переводить некоторые посты из англоязычного Техноблога Evernote, в котором наши инженеры и разработчики рассказывают о некоторых подробностях технической реализации сервиса, делятся историями и просто интересными фактами из своей работы.
Сегодня мы хотели бы начать обзор архитектуры Evernote с общего представления о структуре сервиса. Сейчас мы не будем вдаваться в детали относительно каждого компонента, оставив это для будущих постов.
Начнем со схемы, представленной выше. Вся указанная там статистика приведена на 17 мая 2011 года.
MySQL → HandlerSocket на AddConf Санкт-Петербург 29-30 апреля
На AddConf будет мой доклад «Ускоряем MySQL в десятки раз с использованием HandlerSocket».
В докладе будут рассмотрены практические вопросы использования HandlerSocket в системе билинга и сбора статистики, будет рассмотрен протокол HandlerSocket, рассказаны приемы отладки, применяемые утилиты и методы, возможные острые углы.
А так же будет обозрение и результаты использования совместно с технологией sphinx и в качестве модуля nginx и обзор аналогичной технологии innoDb-memcache.
Хочется услышать пожелания к материалам доклада (что добавить а что наф. не нужно), а так же приглашаю его прослушать в живую.
Презентация
PS. Графика при конвертации немного сбилась. В оригинале этого нет.
Промокод на 5% скидку «Александр Календарев — читаю» .
ссылки по теме:
Первый опыт работы с Handler Socket & php_handlersocket
Некоторые тонкости Update & Insert в Handler Socket
nginx модуль
В докладе будут рассмотрены практические вопросы использования HandlerSocket в системе билинга и сбора статистики, будет рассмотрен протокол HandlerSocket, рассказаны приемы отладки, применяемые утилиты и методы, возможные острые углы.
А так же будет обозрение и результаты использования совместно с технологией sphinx и в качестве модуля nginx и обзор аналогичной технологии innoDb-memcache.
Хочется услышать пожелания к материалам доклада (что добавить а что наф. не нужно), а так же приглашаю его прослушать в живую.
Презентация
PS. Графика при конвертации немного сбилась. В оригинале этого нет.
Промокод на 5% скидку «Александр Календарев — читаю» .
ссылки по теме:
Первый опыт работы с Handler Socket & php_handlersocket
Некоторые тонкости Update & Insert в Handler Socket
nginx модуль