Библиотека сайта rus-linux.net
SnowFlock
Глава 18 из 1 тома книги "Архитектура приложений с открытым исходным кодом".
Оригинал: SnowFlock
Авторы: Roy Bryant, Andres Lagar-Cavilla
Перевод: А.Панин
Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
18.8. Заключение
Изменив принцип работы гипервизора Xen и осуществляя отложенную передачу данных состояния виртуальных машин, SnowFlock способен создавать множество работающих клонированных виртуальных машин в течение нескольких секунд. Таким образом, процесс клонирования виртуальных машин при помощи SnowFlock происходит незамедлительно в реальном времени - это повышает удобство использования облачной инфраструктуры, автоматизируя процессы обслуживания кластера и предоставляя приложениям обширные возможности для контроля над ресурсами облака. Также SnowFlock улучшает отзывчивость облака, ускоряя скорость запуска виртуальных машин в 20 раз и повышая производительность большинства созданных виртуальных машин путем копирования используемых операционной системой и приложениями данных кэшей из памяти. Ключевыми возможностями SnowFlock, обуславливающими высокую производительность, являются эвристические методы оптимизации, позволяющие избежать ненужных запросов страниц памяти, и система многоадресного распространения данных, позволяющая совместно получать данные состояния множеству клонированных виртуальных машин. Все, что потребовалось для реализации данного продуманного приложения - это несколько проверенных технологий, ловкость рук и щедрая помощь системы отладки промышленного уровня.
При работе над SnowFlock мы получили два важных урока. Первым уроком является важность обычно недооцениваемого KISS-подхода. Мы ожидали, что реализация технологии снижения интенсивности потока запросов страниц памяти клонированной виртуальной машиной после запуска окажется достаточно сложной. К нашему особенному удивлению, необходимости в ней не обнаружилось. Система работает достаточно хорошо при различных нагрузках с учетом соблюдения единственного принципа: следует доставлять данные памяти тогда, когда они требуются. Другим примером важности простоты реализации является битовая маска наличия страниц памяти. Простая структура данных с применением понятных атомарных семантик доступа значительно упрощает решение ужасной проблемы совместного доступа, которая заключается в соревновании множества виртуальных центральных процессоров за обновление страниц в условиях их асинхронной доставки с помощью многоадресной технологии распространения.
Вторым уроком была важная роль масштабирования. Другими словами, будьте готовы к тому, что работа вашей системы будет нарушена и новые узкие места будут обнаруживаться каждый раз, когда вы увеличиваете нагрузку на систему в два раза. Данный урок тесно связан с предыдущим: простые и элегантные решения отлично масштабируются и не таят в себе нежелательных сюрпризов и повышений нагрузок. Основным примером в данном случае является система mcdist
. При тестировании масштабирования в большом диапазоне механизм распространения страниц с использованием протокола TCP/IP в значительной степени замедляет работу при обслуживании сотен клонированных виртуальных машин. Система mcdist успешна благодаря очень проработанному и точно обозначенному распределению задач: клиенты беспокоятся только о доставке своих страниц; сервер беспокоится только о глобальном управлении потоком. Поддержка mcdist
в виде небольшого и простого приложения, обуславливает отличную возможность масштабирования SnowFlock.
Если вам хочется узнать больше, вы можете посетить сайт Университета Торонто1, чтобы ознакомиться с академическими отчетами и открытым под лицензией GPLv2 исходным кодом, а также сайт GridCentric4 для получения реализации промышленного уровня.
Сноски
http://sysweb.cs.toronto.edu/projects/1
http://www.gridcentriclabs.com/architecture-of-open-source-applications
- Уникальный идентификатор организации (OUI, Organizational Unique ID) является диапазоном MAC-адресов, закрепленным за производителем оборудования.
http://www.gridcentriclabs.com/
Далее: К началу статьи