Поиск по каталогу

Библиотека онлайн

K003587 Отчет по практике Разработка сервера, осуществляющего обмен данными в реальном времени, с помощью асинхронной событийной модели

1250 руб. 450 руб.
В корзину

Реферат

Пояснительная записка к практике содержит 22 страницы, 6 рисунков, 7 источников.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, СЕРВЕР, КЛИЕНТ, АСИНХРОННОСТЬ, NODE.JS, SOCKET.IO, MONGODB, EXPRESS.

Объектом разработки является клиент-серверное приложение, которое предназначено для обмена сообщениями в реальном времени.

Цель работы – разработка и реализация асинхронной архитектуры сервера, для клиент-серверного приложения «живой чат», проверка нагрузки на сервер и сравнение с многопоточной архитектурой сервера.

Результатом работы является клиент-серверное приложение для обмена мгновенными сообщениями.

Область применения – быстрый обмен сообщениями для социальных сетей, онлайн консультантов, закрытых групповых чатов.

Используемые средства разработки: DebianGNU/Linux 8.3, Node.js.

Пояснительная записка выполнена в текстовом редакторе MSOfficeWord 2013.

Содержание

Введение 4

1. Асинхронная событийная модель 5

1.1. Преимущества и недостатки асинхронной событийной модели 6

1.2. Области применения 7

2. Технологии 9

2.1. Node.js 9

2.2. DebianGNU/Linux 9

2.3. Система управления базами данных MongoDB 10

3. Модули Node.js 11

3.1. Модуль Express 12

3.2. Модуль Socket.IO 12

3.3. Дополнительные модули 13

4. Разработка программного обеспечения 14

4.1. Программное обеспечение сервера 14

4.1.1. Создание комнаты и подключение пользователей 15

4.1.2. Регистрация пользователя в системе 17

5. Результаты работы 21

Список литературы 22



Введение

В настоящее время, потребительские ожидания в обслуживании клиентов достигли новых высот, обеспечивая поддержку по телефону и электронной почте, что стало стандартом как для крупных, так и для небольших компаний. Для того, чтобы дифференцировать свой бизнес и улучшить качество обслуживания клиентов, необходимо предоставить своим клиентам быстрый доступ к службе поддержки. Может показаться, что живой чат, это сложное и дорогостоящее средство, но на самом деле, внедрение живого чата в программное обеспечение является простым и очень эффективным.

Все большее число людей общаются по сети Интернет, что является быстрым и недорогостоящим средством коммуникации. Поэтому необходимо, чтобы сообщения и данные, передаваемые с ними, доходили до собеседника как можно скорее и без потерь. Для этого и необходима система обмена данными в реальном времени, которая широко применяется в жизни:

• онлайн консультанты

• социальные сети

• групповые и закрытые чаты

• обмен файлами

• видео сообщения

• онлайн игры

1. Асинхронная событийная модель

В последнее время наблюдается рост платформ, построенных на асинхронной архитектуре. Асинхронная событийная модель менее распространена, чем многопоточная, но имеющая не меньшие возможности. Быстрое расширение доступности Интернета в XXI веке привело повышенным требованиям, которые предъявляются к программным продуктам и системам, обслуживающим сетевые сервисы и пользователей этих сервисов. Самые главные требования − это скорость и безотказность работы. Одной из главнейших концепций, позволяющей создавать надежные и устойчивые к нагрузкам системы, является парадигма событийно-ориентированного программирования. Согласно данной парадигме программа рассматривается как набор объектов, реагирующий на события. Под событиями понимаются действия пользователей, внутренние вызовы самой программы, сигналы системы и других программ. Идеи, лежащие в основе событийно-ориентированного программирования используются в ядре операционной системы Unix.

Дальнейшее развитие концепция получила в создании серверных приложений. Многие современные лидирующие веб-серверы и прокси-серверы, такие как nginx, Node.js, Squid, используют событийную модель.

При возникновении некоторого события (обработка запроса, считывание файла, ответ от базы данных) оно помещается в конец очереди. Поток, который обрабатывает эту очередь, берет событие с начала очереди, и выполняет связанный с этим событием код. Пока очередь не пуста процессор будет занят работой. По такой схеме работает Node.js. У нас имеется единственный поток, обрабатывающий очередь событий. Например, к серверу приходит три запроса, затрачивающие 1,2,1 мс времени обработки соответственно. Из очереди сообщений берется событие, связанное с приходом запроса. Мы обрабатываем запрос, тратим 1мс. Далее делается асинхронный неблокирующий запрос к базе данных и управление сразу же передается дальше. Мы можем взять из очереди следующее событие и выполнить его. К примеру, мы возьмем еще один запрос, проведем обработку, пошлем запрос к базе данных, вернем управление и проделаем то же самое еще один раз. Если приходит ответ от базы данных на самый первый запрос. Событие, связанное с ним помещается в очередь. Если в очереди ничего не было – он сразу же выполнится, данные обработаются и отдадутся назад клиенту. Если в очереди есть событие – придется подождать обработку других событий.

Обычно скорость обработки одного запроса будет сравнима со скоростью обработки многопоточной системой и блокирующими операциями. В худшем случае – на ожидание обработки других событий потратится время, и запрос обработается медленнее. Но зато в тот момент, пока система с блокирующими операциями просто ждала бы 2 мс ответа, система с неблокирующими операциями успела выполнить еще две части двух других запросов. Каждый запрос может выполняться немного медленнее в целом, но в единицу времени мы можем обработать гораздо больше запросов. Общая производительность будет выше. Процессор всегда будет занят полезной работой. При этом на обработку очереди и переходе от события к событию тратится гораздо меньше времени, чем на переключение между потоками в многопоточной системе. Поэтому асинхронные системы с неблокирующими операциями должны иметь не больше потоков, чем количество ядер в системе.

1.1. Преимущества и недостатки асинхронной событийной модели

Асинхронная событийная модель хорошо подойдёт там, где большое множество пользователей одновременно производят какие-нибудь действия, не нагружающие процессор. Например, получают температуру с датчиков в режиме «текущего времени», получают изображения с видеокамер, передают на сервер температуру, снятую с прикреплённых к ним градусников, пишут новые сообщения в чат, получают новые сообщения из чата, и т.п.

Серверы с асинхронной архитектурой подходят для выполнения задач, не нагружающих процессор. Если в цикл событий поместить вычисления, требующие большие вычислительные затраты (например, решение дифференциального уравнения), то все остальные пользователи будут ждать в очереди, пока вычисления не закончатся.

Не забудьте оформить заявку на наиболее популярные виды работ: