113 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое высоконагруженные системы

Введение

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

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

Актуальность данного исследования продиктована возрастающей значимостью информационных технологий в современном мире.

Целью работы является исследование конкретно взятых высоконагруженных систем Google и Вконтакте; изучение их архитектуры, оборудования и платформ на которых они реализованы.

Что такое высоконагруженные компьютерные системы

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

Итак, что же такое высоконагруженная система? Ответ на этот вопрос стоит начать с описания качественных свойств такого рода систем.

Традиционные качества высоконагруженной системы

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

– это не вся правда;

– приведенные факторы являются количественными, а не качественными.

Ниже на основании предпосылки “много пользователей, много данных” будет сформулирован список качественных факторов присущих высоконагруженным системам. Начнем с самого простого.

Многопользовательская система

Высоконагруженное приложение в первую очередь является многопользовательским. То есть в один момент времени с ним работает более чем один человек. Сейчас, в эру стремительного развития Интернета, это тысячи и сотни тысяч человек.

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

Если посмотреть на статистику Московского метрополитена за 2010 год, то окажется, что средняя часовая нагрузка на систему максимальна в диапазоне от 8 до 9 часов утра. За этот час через турникеты проходят приблизительно 720 тысяч человек. Что порождает необходимость не менее 200 раз в секунду проверять статус предъявленных проездных и принимать решение о пропуске того или иного человека через турникет. В Интернете существует масса высоконагруженных ресурсов с подобными показателями пропускной способности. Например, статистика по StackOverflow за тот же 2010-й год показывает, что их средняя пропускная способность находится в диапазоне 100-150 хитов в секунду.

Определенно у метрополитена более высокие требования к пропускной способности. Но значит ли это что Московский метрополитен можно считать более “высоконагруженным” чем StackOverflow? Вряд ли, в частности потому, что эти две системы оперируют несравнимыми объемами информации.

Читать еще:  Что нужно для видеосъёмки

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

ITSource

Высоконагруженные системы: введение в highload

19.10.2018 Маргарита Александрова

Высоконагруженные системы (highload) стали трендом еще в 2012-ом году. По крайней мере, мы занялись ими именно тогда=) Но вот незадача – четкого определения термина нет до сих пор. Где проходят границы высоких нагрузок? 10 запросов с секунду – это уже хайлоад или еще нет? А 100, 1000? Мы вас удивим, но дело здесь совсем не в цифрах.

Высокая нагрузка – это сколько?

Для начала нужно понять одну простую аксиому: высокие нагрузки – понятие относительное. Их нельзя измерить количеством запросов, которые поступают на сервер, или скоростью работы веб-сайта. Ведь некого «среднего» количества запросов, как и «среднего» сайта, не существует. Один веб-ресурс сможет нормально обрабатывать тысячу запросов в секунду, а другой обвалится на сотом коннекте. Так что дело тут вовсе не в количественных показателях.

Мы собрали самые популярные определения highload от IT-специалистов и просто разбиравшихся в этой теме пользователей:

Хайлоад – это когда IT-система перестает справляться с текущей нагрузкой.

Хайлоад – это когда традиционных подходов к работе IT-инфраструктуры уже не хватает.

Хайлоад – это когда одного сервера становится мало для обслуживания клиентов.

Хайлоад – это когда железо не справляется с выросшими нагрузками.

Хайлоад – это когда возникающие проблемы нельзя решить имеющимися средствами.

Хайлоад – это когда инфраструктуру нужно срочно масштабировать.

Последнее определение позволяет посмотреть на определение highload под новым углом:

Это система, которая постоянно масштабируется и ресурсов которой хватает для работы с текущими нагрузками.

Таким образом, из описания состояния мы переходим к описанию качеств системы, которая растет вместе с потребностями бизнеса.

5 качеств высоконагруженной системы

Это система с огромной аудиторией

Если говорить о веб-приложениях (а именно их большинство специалистов относят к категории highload), то это тысячи, а иногда и сотни тысяч человек. Конечно, конкретную цифру назвать нельзя. Но понятно, что интернет-магазин, обрабатывающий 10 заявок в день, хайлоадом не назовешь. А вот Facebook, Amazon, Flickr, MySpace или Youtube – да, конечно.

Это распределенная система

Если приложению приходится обрабатывать огромные объемы данных, которые еще и постоянно растут, одного сервера не хватит. Самые крупные хайлоады (например, Google или тот же Facebook) работают на сотнях серверов.

Читать еще:  Как сделать откат смартфона

Но огромное количество машин обусловлено не только высокими нагрузками. Точнее, не только большим количеством запросов, которые приходится обрабатывать в режиме нон-стоп. При таки темпах сервера быстро выходят из строя, поэтому чем их больше, тем выше вероятность, что система быстро восстановится после сбоя.

Это система с позитивной динамикой

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

Это интерактивная система

Если человек вводит поисковый запрос в Google, загружает ролик на YouTube или оформляет покупку на eBay, он ожидает, что мгновенно получит результат. Если система будет долго отвечать, скорее всего, он найдет себе другое занятие. Поэтому мгновенный отклик – отличительная и очень важная черта хайлоад-системы.

Это высокоресурсная система

Этот пункт напрямую связан с предыдущим. Чтобы давать мгновенный отклик, системе проходится задействовать много ресурсов – CPU, оперативную память, место на диске и т.д. А для этого нужно, чтобы ресурсы: а) были свободными и б) были в достаточном количестве (лучше даже с запасом).

Здесь мы подходим к парадоксу высоконагруженных систем: чем стремительнее они растут, тем жестче приходится контролировать ресурсы. Когда приложение наращивает аудиторию, закономерно растет и количество запросов. А с ними – объемы ресурсов, которые нужно тратить для поддержания интерактивности.

То есть, хайлоад – это система, которую нужно постоянно масштабировать. Настроить ее работу таким образом довольно сложно, но с точки зрения бизнеса оно того стоит.

Разработка высоконагруженной системы на Node.js, Cassandra и Redis

Однажды заказчик поставил перед нами непростую, но интересную задачу: реализовать высоконагруженную систему, способную обрабатывать огромные массивы данных, передаваемых датчиками нефтяных вышек в реальном времени. Число датчиков могло варьироваться от 1 000 до 1 000 000, а каждый из них может отправлять данные с периодичностью от 1 до 60 секунд. Система также должна была отвечать следующим основным требованиям:

  • Высокая безопасность хранения данных;
  • Огромная пропускная способность;
  • Все технологии для критических частей системы должны быть свободным ПО.

Архитектура

Архитектура представлена на диаграмме, приведенной ниже. Давайте рассмотрим основные компоненты системы:

  • Cassandra cluster. Cassandra – это открытая NoSQL СУБД, реализованная на языке Java сообществом Apache Software Foundation. Она отлично подходит для работы с большими объемами данных и предоставляет децентрализованное, масштабируемое, устойчивое хранилище. У Cassandra есть собственный язык запросов – CQL (Cassandra Query Language). Также она поддерживает технологию MapReduce.
  • Web part. Состоит из двух основных частей. Первая часть – это веб-сайт с админкой и пользовательским интерфейсом. Администратор может управлять локальными агентами и их настройками, создавать пользователей и управлять их правами, редактировать формат отображаемых данных. Пользователь может авторизоваться на сайте и просматривать данные двух видов – архивные и в режиме реального времени. Для графиков мы использовали библиотеку Highcharts, для остального интерфейса – Bootstrap и Ext.js. Это позволило за минимальные сроки создать работающий и прилично выглядящий интерфейс. Вся бизнес-логика была реализована на Node.js. Вторая часть – это приложение «Cache Manager», реализованное на языке Java. Оно предназначено для обновления и очистки кэша данных. В качестве кэша мы использовали Redis.
Читать еще:  С чего начать изучение нейронных сетей

Детали реализации

Одна из особенностей Cassandra – кластеризация. Мы собрали кластер из четырех машин. Настройка Cassandra и ее окружения заслуживает отдельной статьи. После настройки и генерации токенов для каждого узла кластера, мы получили следующую диаграмму в OpsCenter (система для визуального управления и мониторинга СУБД Cassandra):

Круги — это узлы Cassandra. Зеленый цвет показывает, что все они функционируют в нормальном режиме. Равномерное расположение кругов относительно друг друга означает, что кластер сбалансирован.

Мы реализовали веб-часть с помощью Node.js и фреймворка Express.js, который позволяет на лету создавать Web API, а значит, можно отделить бизнес-логику от интерфейса. Все данные пользователей и их настройки хранятся в развернутой на том же сервере MySQL. За логику доступа к данным целиком и полностью отвечает модуль Node ORM2. Это очень удобная ORM, которая поддерживает много реляционных и NoSQL СУБД.

Чтобы избежать задержек при отображении данных в реальном времени на стороне клиента, мы создали кэш на движке Redis. В Redis лежат последние N записей, полученных от локальных агентов. Это было сделано, в частности, потому, что Cassandra может хранить миллионы и миллионы записей, а также имеет известные проблемы с фильтрацией данных. Таким образом, теперь мы не обращаемся каждый раз к Cassandra, а читаем свежие данные из кэша. На клиентской стороне есть несколько линейных графиков и таблиц с данными, содержимое которых обновляется каждую секунду.

Для анализа архивных данных и работы с ними, мы развернули Apache Hadoop. Hadoop – это фреймворк, который отлично справляется с обработкой больших объемов данных. Мы использовали Hadoop MapReduce.

Заключение

Зачем все это нужно? Сегодня мы каждый день встречаемся с постоянно растущим количеством данных, затрагивающих такие аспекты нашей жизни, как: наука, безопасность, социальные сети, торговля на бирже. Так как Cassandra легко масштабируется и позволяет хранить данные в любом виде, мы можем приспособить ее к хранению абсолютно любых бизнес-моделей в реальном времени и гарантировать безопасность, целостность, устойчивость и доступность информации в любое время. Кроме того, все эти инструменты являются свободным ПО — а значит, есть быстрый и удобный способ создания высоконагруженных систем.

Источники:

https://studbooks.net/2035322/informatika/takoe_vysokonagruzhennye_kompyuternye_sistemy
https://itsource.com.ua/blog/vysokonagruzhennye-sistemy-vvedenie-v-highload/
https://magora-systems.ru/high-load-system-node-js-cassandra-redis/

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов:

Для любых предложений по сайту: [email protected]