Тема: Отказоустойчивые распределенные вычисления на Python на основе управляющих объектов
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Введение 5
Обзор существующих решений 7
Постановка задачи 9
Глава 1. Subordination: отказоустойчивость из «коробки» . . 10
1.1. Ключевые особенности 10
1.2. Основные компоненты и принцип работы 10
1.3. Возможность обработки сбоев 12
Глава 2. SBN-Python: реализация и использование 14
2.1. Исполнение Python кода 14
2.2. Python/C API и принцип использования 15
2.3. Получившийся интерфейс 15
2.4. Обсуждение 19
Глава 3. SBN-Python: тестирование 21
3.1. Программа 21
3.2. Замеры производительности 23
3.3. Обсуждение 25
Глава 4. SBN-Python: применение на реальном кейсе компании 26
4.1. Задача 26
4.2. Разбор текущего решения 26
4.3. Построение новой архитектуры решения 27
4.4. Реализация и развёртка получившегося решения 28
4.5. Замер производительности 30
Заключение 31
Список литературы 32
Приложение А. Схема работы SBN-Python Hello программы 35
📖 Введение
Любая распределённая вычислительная система представляет из себя множество индивидуальных сущностей (узлов) (см. рис. 1), для связи которых используются различные специализированные программные интерфейсы.
Для такого рода систем создание универсального интерфейса, который бы позволял программировать их без непосредственной привязки к количеству узлов, их физическим характеристикам, количеству параллельных процессов, сетевым адресам и т.п., упирается в свойственную им ненадежность. Действительно, при рассмотрении единственного вычислительного узла, его выход из строя является критической ситуацией, которую нельзя разрешить на уровне программного обеспечения, из-за чего все программы, предназначенные для запуска на одном узле, написаны в предположении, что этот узел абсолютно надежен. Для распределенной системой достаточно большого размера ситуация обстоит совершенно иначе. Выход из строя одного из узлов в данном случае является нормальной ситуацией, поэтому данный интерфейс в таком случае должен предоставлять механизмы для сохранения работоспособности системы в целом. На текущий день в распределенных системах используются достаточно примитивные механизмы обеспечения отказоустойчивости: контрольные точки, дампы памяти и другие интенсивные операции ввода-вывода.
Таким образом, текущие программные интерфейсы, как в целом, так и в Python, либо слишком узкоспециализированные, либо не дают полной отказоустойчивости.
✅ Заключение
Результаты проведения тестирования показали корректность работы интерфейса, прирост производительности при увеличении количества узлов в кластере, а также возможность обработки различных сценариев сбоя узлов за приемлемое время.
Помимо этого, новый интерфейс для отказоустойчивых распределенных вычислений SBN-Python, во-первых, был успешно применён на реальном кейсе компании ООО «Газпромнефть-ЦР», во-вторых, смог показать свои преимущества по сравнению с текущим решением.
В дальнейшем планируется, во-первых, лучше проработать текущее решение, во-вторых, продумать и реализовать возможность использования полученного интерфейса для построения распределенных веб-сервисов.



