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


ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОТОТИПА ГОРИЗОНТАЛЬНО МАСШТАБИРУЕМОЙ СИСТЕМЫ ДЛЯ ДАЛЬНЕЙШЕГО ИСПОЛЬЗОВАНИЯ АРХИТЕКТУРЫ И КОМПОНЕНТОВ В ПРОИЗВОДСТВЕ

Работа №60745

Тип работы

Дипломные работы, ВКР

Предмет

программирование

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

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


ВВЕДЕНИЕ 5
1. ОБЗОР И АНАЛИЗ ИСТОЧНИКОВ 7
1.1 Статьи 7
1.2 Существующие решения 10
1.2.1 Шаблоны 10
1.2.2 Архитектура существующих проектов 12
2. ПРОЕКТИРОВАНИЕ ПРОТОТИПА 16
2.1 Выбор подхода и разработка архитектуры 17
2.1.1 Горизонтальная масштабируемость 17
2.1.2 Возможность добавлять, удалять новые сервера 19
2.1.3 Автоматическое развертывание системы 20
2.1.4 Балансировка нагрузки 20
2.1.5 Независимость серверов системы 21
2.2 Алгоритм выбора сервера для пользователя 21
2.2.1 Разделение серверов по модулю 21
2.2.2 Консистентное хеширование 22
2.2.3 “Перемещение” узлов 24
2.2.4 Разделение списка ключей на слоты 24
2.2.5 Хеширование с наивысшим случайным весом 25
3. РАЗРАБОТКА И ТЕСТИРОВАНИЕ ПРОТОТИПА 29
3.1 Алгоритм переноса пользователей на новый узел 29
3.2 Оповещение пользователей об изменении количества узлов 29
3.3 Автоматическое развертывание системы 30
3.4 Описание работы с прототипом 33
3.5 Тестирование прототипа, выявление результатов 35
ЗАКЛЮЧЕНИЕ 37
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 39


Если проект оказался удачным и набирает популярность, то скорее всего, наступит момент, когда мощности сервера, на котором работает приложение, не хватает. А нехватка мощностей отрицательно сказывается на производительности приложения. Если все процессы в системе уже оптимизированы, а производительность все равно оставляет желать лучшего, можно рассмотреть следующие пути улучшения производительности:
1. Добавление новых ресурсов в существующий сервер -
вертикальное масштабирование.
2. Реализация горизонтального масштабирования.
Было интересно рассмотрение именно горизонтального масштабирования серверов в связи с тем, что мощность сервера можно увеличивать не до бесконечности, то есть и добавленной мощности может в конечном счете не хватить[9].
Когда в компании, в которой я работаю, начали интересоваться горизонтальным масштабированием, выяснилось, что в компании нет не только какого-либо готового решения, но и опыта разработки систем с горизонтальным с масштабированием. В то же время набрали популярность системы, работающие с множеством пользователей и требующие большого количества ресурсов. Чтобы не отставать от рынка и иметь возможность предоставлять заказчикам горизонтально масштабируемые системы, надо иметь опыт разработки подобных систем как доказательство того, что компания может это сделать. Причем предоставлять готовые решения нужно в большинстве случаев в сжатые сроки. Для этого было принято решение разработать прототип, который совмещает в себе реализацию существующих решений с ориентацией на цели и среду компании. Наряду с прототипом будут разработаны библиотека, инструкции и скрипты, которые позволят разработать систему с горизонтальным масштабированием. А так как будет готовое решение, которое служит примером горизонтально масштабируемой системы, то реализация займет меньше времени, если бы пришлось разрабатывать все с нуля.
О необходимости масштабируемой архитектуры для высоконагруженных систем свидетельствует и тот факт, что такие многопользовательские системы как ВКонтакте [10], Facebook [11], Одноклассники [12], Instagram [13] сразу или путем опыта пришли к масштабируемым архитектурам.
Таким образом, актуальностью данной работы является то, что нет
готового прототипа и отработанной совокупности подходов, взяв которые, можно было бы в сжатые сроки реализовать горизонтально масштабируемую систему.
В соответствии с выявленной актуальностью была поставлена следующая цель: разработать прототип горизонтально масштабируемой системы и инструкцию к ней, которые можно будет использовать при реализации других горизонтально масштабируемых проектов.
Объектом работы является разработка прототипа горизонтально масштабируемой системы, предметом - библиотека, набор скриптов и инструкций, позволяющие разработать с их использованием горизонтально масштабируемую систему.
Для достижения указанной цели были поставлены следующие задачи:
1. Анализ существующих алгоритмов
2. Выбор подхода и разработка архитектуры
3. Разработка прототипа
4. Реализация автоматического развертывания системы
5. Документирование работы с прототипом


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

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

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


В ходе работы были проделаны следующие задачи:
1. Проанализированы существующие алгоритмы для выбора сервера по ID пользователя. Путем сравнения был выбран наиболее подходящий - Хеширование с наивысшим случайным числом
2. Разработана архитектура системы, позволяющая менять количество входящих в систему серверов без остановки системы
3. Разработан прототип системы согласно архитектуре, причем пользователи равномерно распределяются между имеющимися серверами
4. Реализовано автоматическое развертывания системы на заданное количество серверов
5. Задокументирована работа с представленной библиотекой и скриптами
Таким образом, поставленную цель можно считать выполненной: разработан прототип горизонтально масштабируемой системы, а также написаны инструкцию к ней, которые можно будет использовать при реализации других горизонтально масштабируемых проектов.
Результатом работы является библиотека, написанная на C#, которая предоставляет алгоритм для разработки горизонтально масштабируемой системы. К библиотеке прилагается документация, которая включает в себя пример использования библиотеки. Также есть описание настройки системы непрерывной интеграции с приложенными скриптами, которые позволяют развертывать систему на заданное количество серверов.
Система разработана как доказательство умения разработки концепции горизонтально масштабируемой системы. Навыки разработки такого рода системы имеют важное значение для возможности конкурировать на рынке. Система будет служить в качестве прототипа при необходимости разработать горизонтально масштабируемые системы в будущем.
В дальнейшем планируется продолжить работу над системой: осуществить добавление нового сервера без прерывания сессии пользователя.



1. GitForum [Электронный ресурс] // On-line библиотека. 2000 г.
URL: http://citforum.ru/intemet/webservers/websbal.shtml (дата обращения:
31.05.2017) .
2. Компания "Интерфейс". Масштабируемость систем бизнесаналитики [Электронный ресурс] // Interface.ru: сайт поставщиков
инструментальных средств и решений для создания корпоративных информационных систем, разработки приложений, управления проектами, реинжиниринга деятельности предприятий, OLAP. 2003 г. URL: http: //www.interface. ru/fset.asp?Url=/crystal/cms .htm&anchor=4 (дата
обращения: 16.01.2017).
3. Шардинг и репликация [Электронный ресурс] // Оптимизация и масштабирование Web приложений. 2017 г. URL: https://ruhighload.com/post/%D0%A8%D0%B0%D1%80%D0%B4%D0%B8%D 0%BD%D0%B3+%D0%B8+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8% D0%BA%D0%B0%D1%86%D0%B8%D1%8F (дата обращения: 04.06.2017).
4. HefedhMili , Ali Mili , SherifYacoub , Edward Addy. Reuse-based software engineering: techniques, organization, and controls // Wiley-Interscience. 2001. NewYork.
5. Wikipedia [Электронный ресурс] // Открытая on-line библиотека.
2016 г. URL: https://en.wikipedia.org/wiki/Replication_(computing) (дата
обращения: 31.05.2017).
6. Application Servers (appservers) [Электронныйресурс] // Best Price Computers: site of UK based manufacturer of quality PCs. 2016 г. URL: http://www.bestpricecomputers.co.uk/glossary/application-server.htm (датаобращения: 16.01.2017).
7. Сеанс (сессия) в Java[Электронный ресурс] // Блог о шифровании. 2010 г. URL:http://crypto.pp.ua/2010/06/seans-sessiya-v-java/ (дата обращения: 31.05.2017).
8. Дональд Кнут. Сортировка и поиск // Искусство
программирования. Том 3. - 2-е издание. 2007 г. - С. 824.
9. BUYVM [Электронный ресурс] // Affordable KVM VPS. 2016 г. URL: https://buyvm.net/kvm-vps/ (дата обращения: 31.05.2017).
10. Иван Б. Архитектура Вконтакте [Электронный ресурс] // Insight IT: блог об информационных технологиях, разработке и архитектуре высоконагруженных интернет-проектов. 2010 г. URL: https://www.insight- it.ru/highload/2010/arkhitektura-vkontakte/ (дата обращения: 13.12.2016).
11. Иван Б. Архитектура Facebook [Электронный ресурс] // Insight IT: блог об информационных технологиях, разработке и архитектуре высоконагруженных интернет-проектов. 2010 г. URL: https://www.insight- it.ru/highload/2010/arkhitektura-facebook/ (дата обращения: 13.12.2016).
12. Иван Б. Архитектура Одноклассников [Электронный ресурс] // Insight IT: блог об информационных технологиях, разработке и архитектуре высоконагруженных интернет-проектов. 2011 г. URL: https://www.insight- it.ru/highload/2011/arkhitektura-odnoklassnikov/ (дата обращения: 13.12.2016).
13. Иван Б. Архитектура Instagram [Электронный ресурс] // Insight IT: блог об информационных технологиях, разработке и архитектуре высоконагруженных интернет-проектов. 2012 г. URL:https://www.insight- it.ru/highload/2012/arkhitektura-instagram/ (дата обращения: 13.12.2016).
14. Сокольников А.М. Сравнительный анализ подходов к разработке архитектуры и систем управления базами данных для высоконагруженных WEB-сервисов // Кибернетика и программирование. — 2014. - № 4. - С.1-13. DOI: 10.7256/2306-4196.2014.4.12800.
15. Крестьянинов М. Масштабирование нагрузки web-приложений [Электронный ресурс] // Хабрахабр: сайт для публикации ИТ новостей. 2011 г. URL: https://habrahabr.ru/post/113992/ (дата обращения: 10.12.2016).
16. Либман Л. Философия распределения нагрузки // Журнал сетевых решений LAN. 2000 г. №6.
17. Поплавский C. Шардинг с SQL Azure [Электронный ресурс] //
MicrosoftTechNet: интернет-портал Microsoft. 2016 г.
URL:https://technet.microsoft.com/ru-m/cloud/jj215540.aspx (дата обращения:
10.12.2016) .
18. Srinath P. ListofKnownScalableArchitectureTemplates
[Электронный ресурс] // Srinath'sBlog :MyviewsoftheWorld: блог архитектора программного обеспечения. 2011 г. URL:
http://srinathsview.blogspot.ru/2011/10/list-of-known-scalable-architecture.html (дата обращения: 10.12.2016).
19. Иван Б. Архитектура Одноклассников [Электронный ресурс] // Insight IT: блог об информационных технологиях, разработке и архитектуре высоконагруженных интернет-проектов. 2011 г. URL: https://www.insight- it.ru/highload/2011/arkhitektura-odnoklassnikov/ (дата обращения: 13.12.2016).
20. Odnoklassniki_ru. Архитектура и платформа проекта Одноклассники [Электронный ресурс] // Хабрахабр: сайт для публикации ИТ новостей. 2011 г. URL: https://habrahabr.ru/company/odnoklassniki/blog/115881/ (дата обращения: 10.12.2016).
21. Крестьянинов М. Масштабирование нагрузки web-приложений [Электронный ресурс] // Хабрахабр: сайт для публикации ИТ новостей. 2011 г. URL: https://habrahabr.ru/post/113992/ (дата обращения: 10.12.2016).
22. Partitioning: how to split data among multiple Redis instances. [Электронный ресурс] // Redis. 2016 г. URL: https://redis.io/topics/partitioning (дата обращения: 04.06.2017)
23. ConsistentHashing. [Электронный ресурс] // PlasmaConduitBlog.
2016 г. URL: http://blog.plasmaconduit.com/consistent-hashing/ (дата
обращения: 04.06.2017).
24. Robbie Strickland. Consistent Hashing // Cassandra High Availability. - 1-еиздание. 2007 г. - С. 223.
25. Thaler, David, ChinyaRavishankar. Name-Based Mapping Schemes to Increase Hit Rates // IEEE/ACM Transactions on Networking. 1998. - P. 245.
26. David Karger, Eric Lehman, Tom Leighton, Matthew Levine, Daniel Lewin, Rina Panigrahy. Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web // Consistent Hashing and Random Trees. 1998. - P. 365.


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




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