K003587 Отчет по практике Разработка сервера, осуществляющего обмен данными в реальном времени, с помощью асинхронной событийной модели
Реферат
Пояснительная записка к практике содержит 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. Преимущества и недостатки асинхронной событийной модели
Асинхронная событийная модель хорошо подойдёт там, где большое множество пользователей одновременно производят какие-нибудь действия, не нагружающие процессор. Например, получают температуру с датчиков в режиме «текущего времени», получают изображения с видеокамер, передают на сервер температуру, снятую с прикреплённых к ним градусников, пишут новые сообщения в чат, получают новые сообщения из чата, и т.п.
Серверы с асинхронной архитектурой подходят для выполнения задач, не нагружающих процессор. Если в цикл событий поместить вычисления, требующие большие вычислительные затраты (например, решение дифференциального уравнения), то все остальные пользователи будут ждать в очереди, пока вычисления не закончатся.




Заказывала дипломную, прочитав отзывы vip-study.ru Сделали хорошо на 80% оригинальности. Но преподаватель, несмотря на методичку, сказал, что нужно аж 85%! А это нереально, так как были подсвечены только сноски и список литературы с фамилиями и названиями учебников. На https://vip-study.ru сказали, что фамилии авторов и названия учебников отрерайтить не возможно. Не будут же они менять Александра Пушкина на Сашко Гарматного))). Пришлось заказывать повышение на этом сайте. Мне добавили 5%, но я даже не поняла как. По тексту, сноскам, литературе ничего не поменялось, даже А.С. Пушкин остался на месте! Преподаватель проверил в ворде, но не поверил в 85%, так как тоже ничего не заметил сверхнового в литературе и перевел в PDF. В ПДФ тоже вышло 85%, и только после этого допустили к защите. Выражаю огромную благодарность сайтам vip-study ru и 5555455.ru за помощи и поддержку. Отдельное спасибо девочкам за прошлогодние отзывы, которые мне помогли дойти до защиты!
Превосходная работа! Нашел этот сайт именно по отзывам о повышении в PDF формате. Действительно все работает. Делают то, что никто не умеет. Я отправил работу в ворде для повышения %, указав в заказе - повысить для пдф. Мне вернули также в ворде. Я перевел в ПДФ и случилось чудо! Как и обещали 75% на самой жесткой проверке Антиплагиат.ВУЗ!
Благодарю за работу. Качественно повысили до 87% даже в таком редком формате, как PDF. Преподаватель ничего не заметил. Цена оптимальна, по сравнению с дешевыми неработающими вариантами.
Спасибо за проделанную работу! Помогли повысить Антиплагиат вуз ВКР Вуз Антиплагиат показал около 80% и 5% цитирования. До корректировки было около 40% и 15% соответственно. Интересно, что практически не видно изменений, все укладывается в рамки нормоконтроля, а процент при этом в 2 раза выш, чем был изначально. Работу писала сама. Хорошо, что есть такие сервисы, с помощью которых есть гарантия успешной защиты, а так бы весь труд пошел насмарку.
Спасибо за повышение для личного кабинета! Это реально первый сервис, который помог с повышением для личного кабинета. Прошел на 78%!
Спасибо огромное!! Очень выручили)) Рекомендую!
Нужен был безумный % по оригинальности - 90%. Что только не делала, хотя первоначальный вариант имел уже хороший уровень-70%. И вот, я правила ручками (подбирая синонимы) - не помогло, "Антиплагиат" эту писанину просто не пропустил. Затем заказала повышение % в одной фирме через интернет, у них получился перекошенный текст, на который платный антиплагиат вообще выдал ошибку и предупреждающую рамку. Потом случилось чудо, я случайным образом нашла ваши контакты и буквально за несколько часов был сделан идеально проходящий антиплагиат текст. Я дождалась результатов официальных, все просто замечательно, антиплагиат пройден и он составил 97%. Не реклама, я реальный заказчик!
Спасибо получилось 81,34%
Огромное еще раз спасибо...до связи......Михаил
Большое спасибо за помощь, за считанные часы помогли обработать текст, Оригинальность более 74 %. Всем советую!
Клевая компания! Я мучилась с антиплагиатом почти 2 недели и все бестолку. % почти не менялся. Помогли повысить за 1 день до 77%. Огромное спасибо!