Открыт код системы распределённой памяти Galaxy
11 июля 2012 года
Компания Parallel Universe объявила об открытии под лицензией LGPLv3 системы распределённой памяти Galaxy (in-memory data-grid), предназначенной для создания распределённых приложений, выполняемых на нескольких узлах, обрабатывающих единый массив данных. Galaxy берёт на себя функции распределения объектов данных, хранимых в виде байтового массива, между различными узлами кластера, создавая для запущенного на нескольких узлах приложения иллюзию, что работа ведётся с монолитной областью памяти.
При организации работы распределённой памяти возникает необходимость решения трёх проблем: выбор на каком узле потребуется та или иная порция данных, в ситуации когда все данные не умещаются в памяти одного узла; обеспечение непротиворечивости данных, при том, что один и тот же блок может одновременно обрабатываться и дублироваться на нескольких узлах; защита от потери/повреждения данных в случае сбоя узла кластера или возникновении сетевых проблем.
Отличительной чертой Galaxy является способ привязки данных к узлам кластера, на которых запущены процессы-обработчики. Вместо использования хэшей Galaxy реализует метод динамического перемещения объектов от одного узла к другому по мере возникновения в них необходимости, используя протокол похожий по своей сути на технику обеспечения согласованности содержимого внутреннего кэша CPU. Подобный подход позволяет использовать Galaxy в приложениях с предсказуемой логикой обращения к данным, поведение которых согласуется с определёнными вероятностными метриками, позволяющими предположить, что расположенные рядом данные скорее всего будут обработаны вместе, чем данные находящиеся далеко друг от друга.
Для оптимизации производительности каждый объект данных ассоциируется с определённым узлом-владельцем, который выбирается по степени интенсивности работы с объектом данных. Когда с объектом работает узел владелец данные обрабатываются локально с минимальными задержками, при обращении к данному блоку с другого узла выполняются дополнительные действия по синхронизации состояния между узлами. В пределах всего кластера гарантируется согласованность всех данных, например, если блок Б изменён после изменения блока А, то гарантируется, что ни на одном узле не может оказаться новый блок А и старый Б. Для обеспечения отказоустойчивости, данные могут дублироваться на дополнительных узлах.
Galaxy не является традиционным хранилищем данных в формате ключ/значения, но при желании может быть использован в качестве низкоуровневого базиса для создания подобных систем и произвольных распределённых структур данных. Кроме того, Galaxy предоставляет средства для обмена сообщениями с гарантированной доставкой и сохранением порядка следования, а также обеспечивает работу сервиса по управлению конфигурацией кластера. Для управления кластером поддерживается интеграция с системами ZooKeeper и JGroups. Для обеспечения постоянного хранения содержимого распределённой памяти может быть использована БД BerkeleyDB и любые SQL СУБД. Код компонентов Galaxy написан на языке Java.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.