Тип работы:
Предмет:
Язык работы:


Реализация сервиса оркестратора, управляющего построением распределенной код-модели

Работа №145466

Тип работы

Бакалаврская работа

Предмет

математика и информатика

Объем работы37
Год сдачи2024
Стоимость4700 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
29
Не подходит работа?

Узнай цену на написание


Введение 4
Постановка задачи 6
1. Обзорный раздел по предметной области 7
1.1. Ключевые компоненты системы 7
1.2. Устройство SUDU до введения оркестратора 7
1.3. Недостатки старого подхода 9
1.4. Существующие решения 10
1.4.1 Temporal 10
1.4.2 Conductor 11
2. Приоритизация коммитов и линеаризация 12
2.1. Терминология 12
2.2. Неформальные требования приоритизации 13
2.3. Линеаризация коммитов 13
2.4. Формализация требований 14
3. Устройство оркестратора 15
3.1. Устройство SUDU после добавления оркестратора 15
3.2. Внутреннее устройство оркестратора 17
3.2.1 OrchestratorService 17
3.2.2 PipelineManager и OrchestratorConfig 17
3.2.3 CommitListener и SnapshotProcessingResultListener ... 19
3.2.4 CommitHandler и SnapshotProcessingResultHandler ... 19
3.2.5 OrchestratorManager 20
3.2.6 Scheduler и TaskSubmitter 21
3.2.7 InfoManager и TaskManager 22
3.3. Паттерн Transaction Outbox 22
3.4. Feature Toggle 24
3.5. Структура базы данных 25
3.6. Алгоритм выбора задач на назначение 27
3.6.1 Общий алгоритм 27
3.6.2 Линеаризация 27
3.6.3 Baseline 28
3.7. Тестирование 29
4. Результаты замеров производительности сервиса 32
4.1. Конфигурация окружения 32
4.2. Замеры эффективности линеаризации по используемому дисковому пространству 32
4.3. Замеры эффективности линеаризации по времени построения кодовой модели 33
4.4. Покрытие тестами 33
Заключение 34
Список литературы 36


IDE (Integrated Development Environment) — интегрированная среда разработки, которая представляет собой программное обеспечение (ПО), используемое разработчиками для создания, редактирования, отладки и оптимизации исходного кода компьютерных программ. Она обеспечивает набор инструментов и служб, которые упрощают и ускоряют процесс разработки программного обеспечения.
Одни из самых больших проблем при работе с IDE, с которыми сталкиваются многие разработчики больших систем — долгая индексация проектов и большая задержка при выполнении различных команд в IDE.
SUDU — инновационная облачная платформа для IDE, основная цель которой решить данную проблему, используя преимущества облачных вычислений. SUDU представляет собой набор сервисов с открытым API, с помощью которого можно получить информацию из кодовой модели для того или иного коммита. Например, в качестве запроса к кодовой модели может быть поиск объявления символа; поиск мест, которые ссылаются на указанный символ и другие. На данный момент SUDU поддерживает несколько языков, а именно C++ и Java, но все кодовые модели этих языков строятся по инкрементальному принципу, то есть построение кодовой модели для нового коммита происходит на основе кодовой модели уже построенного ранее одного из предыдущих коммитов. Такой подход позволяет ускорять построение новой кодовой модели, а также оптимизировать объем данных, который нужен для хранения кодовой модели, так как он позволяет хранить только непосредственные изменения между двумя кодовыми моделями.
В SUDU построение кодовых моделей происходит асинхронно, по запросу пользователя. После добавления проекта в SUDU, проект автоматически синхронизируется с указанным git репозиторием в асинхронном режиме. Но вполне возможна ситуация, при которой пользователь запросил построить дополнительно несколько сотен исторических коммитов, в таком случае возникает неопределенность в порядке построения кодовых моделей для новых коммитов и исторических коммитов. Для управления очередностью построения кодовых моделей и распределения ресурсов при построении возникла необходимость в сервисе, который мог бы оркестрировать построение инкрементальных кодовых моделей.
Данная работа посвящена исследованию и имплементации cервиса, оркестрирующего построение распределенной кодовой модели.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


Целью и основным результатом данной работы является реализация сервиса оркестратора, управляющего построением распределенной кодовой модели. В частности, в ходе выполнения работы были получены следующие результаты:
1. Сформированы функциональные и нефункциональные требования к разрабатываемому сервису, учитывающие архитектуру SUDU и свойства уже имеющихся сервисов, а также недостатки существовавшей на тот момент системы.
2. Все требования были формализованы, а структура сервиса оркестратора и все сопровождающие детали перед имплементацией были оформлены в качестве ADR (Architecture Decision Record) документа, который был принят командой.
3. Сервисы, которые строили проектную и кодовую модель, были адаптированы под использование в унифицированном виде, то есть реализовывали общий gRPC API.
4. Полностью реализован и оттестирован сервис оркестратор, управляющий построением распределенной кодовой модели. Сервис оркестратор был успешно интегрирован в SUDU и сейчас используется в нем наряду со всеми остальными компонентами системы.
5. Расширен CLI (Command Line Interface), используемый для взаимодействия с сервисами SUDU, для добавления взаимодействия с сервисом оркестратором.
6. Создан документ, описывающий все настройки сервиса через конфигурацию переменных окружения.
7. Произведен замер эффективности представленного решения, который доказал эффективность выбранного подхода: дисковое пространство, необходимое для хранения индексов кодовых моделей, уменьшилось, а общая пропускная способность системы увеличилась.
Таким образом, цель работы достигнута в полном объеме, а сервис оркестратор введен в эксплуатацию в SUDU на постоянной основе.


[1] Docker Documentation. URL: https://docs.docker.com/
[2] RocketMQ Documentation. URL: https://rocketmq.apache.org/docs/
[3] Temporal Documentation. URL: https://docs.temporal.io/
[4] Temporal Source Code. URL: https://github.com/temporalio/temporal
[5] Temporal SDK. URL: https://docs.temporal.io/dev-guide
[6] Conductor Documentation. URL: https://conductor-
oss.github.io/conductor/documentation/api/index.html
[7] Conductor Source Code. URL: https://github.com/Netflix/conductor
[8] Conductor First Workflow. URL: https://conductor-
oss.github.io/conductor/devguide/labs/first-workflow.html
[9] Conductor Workflow Example. URL: https://conductor-
oss.github.io/conductor/devguide/labs/kitchensink.html
[10] Elasticsearch. URL: https://www.elastic.co/elasticsearch
[11] gRPC Documentation. URL: https://grpc.io/docs/
[12] Transaction Outbox. URL: https://habr.com/ru/companies/lamoda/articles/678932/
[13] Feature Toggles (aka Feature Flags). URL: https://martinfowler.com/articles/feature-toggles.html
[14] Postgres Documentation. URL: https://www.postgresql.org/docs/
[15] Flyway Documentation. URL: https://documentation.red-gate.com/flyway
[16] JUnit 5 User Guide. URL: https://junit.org/junit5/docs/current/user-guide/
[17] TestContainers Documentation. URL: https://java.testcontainers.org/
[18] Abseil Source Code. URL: https://github.com/abseil/abseil-cpp
[19] Kubernetes Documentation. URL: https://kubernetes.io/docs/home/
[20] K9S Tool. URL: https://k9scli.io/
[21] Terraform Documentation. URL: https://developer.hashicorp.com/terraform/docs



Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ