что такое сервер twhkmo
Что такое сервер и как он работает
Каждый сайт, который вы посещаете, каждое отправленное в интернете письмо, каждый персонаж в игровой вселенной любимой MMO – все эти цифровые сущности живут на серверах. Давайте разберемся, что представляют собой серверы и почему так важны для работы всего интернета.
Разбираем понятие «сервер»
Изначально сервером называли приложение или процесс, запущенный на компьютере. Термин появился в 1969 году в документации, описывающей ARPANET (это предшественник интернета). Он произошел от слова serving, то есть «служить», которое хорошо описывает деятельность сервера в общих чертах.
Со временем термин немного расширился и теперь описывает любое устройство, на котором запущены серверные приложения. То есть те, что обслуживают пользователей в той или иной стези.
Если говорить чуть более ясно, то это ПК, который беспрерывно работает и выступает в качестве площадки для разработки, базирования сетевых шлюзов, создания игровых платформ или хранения данных на постоянной основе.
Такие устройства делятся на категории по различным параметрам. В связи с этим обретают новые имена. Например, VDS, VPS, виртуальный хостинг. О том, что эти названия под собой подразумевают, поговорим позже. Говорю об этом, чтобы вы не смущались, если в дальнейшем буду называть сервер просто компьютером, VPS или «машиной».
Для чего нужны серверы?
Основное направление — поддержка интернет-ресурсов. Количество задач, возлагаемых на сервер велико. Вот несколько сценариев, в которых необходимы подобные устройства:
Почему их никогда не выключают?
Все описанные выше задачи подразумевают наличие аппаратной и программной платформы, которая постоянно находится в активном состоянии, обеспечивает высокую скорость и достаточную стабильность, чтобы сайты, приложения, почта и видеоигры неожиданно не отключались. Весь интернет держится на таких компьютерах.
Люди всегда хотят играть в любимые ММО, круглосуточно переписываются по электронной почте, работают и заходят на сайты. Это не физический магазин или компьютерный клуб. Нельзя просто взять и закрыть сайт на ночь и открыть к утру. Они должны быть доступны круглосуточно, а любое временное отключение считается критической ошибкой администрации ресурса, которая сильно бьет по репутации.
На серверы полагаются банковские службы, мессенджеры, такси, сервисы доставки еды, курьеры, государственные службы. Можно представить себе масштаб трагедии, если какой-то из удаленных компьютеров, поддерживающих инфраструктуру страны, вырубится.
Поэтому ими занимаются профессиональные компании, называемые хостинг-провайдерами. Они закупают мощное «железо», нанимают команду инженеров, обслуживающих все накупленное, и обеспечивают людей бесперебойным доступом к нужному им оборудованию.
Типы серверов
Есть несколько вариантов разделения серверов на группы. Мы рассмотрим две конкретные системы сортировки.
По назначению
По техническим характеристикам
Теперь разберемся, почему серверы имеют разные названия.
Физический выделенный сервер
Первичный вариант. Компьютер, который расположен в хостинге. Полноценный ПК. Мало чем отличающийся от того, что стоит у вас дома. Разве что он мощнее и никогда не выключается. Любой тип сервера в плане назначения может базироваться на таком PC.
Блейд-сервер
Примерно то же самое, только в ультракомпактном корпусе. Это попытка выдать каждому арендатору полноценное выделенное «железо», но при этом сократить издержки. Это делается за счет общего питания и некоторых других компонентов, которые можно делить между клиентами.
Виртуальный хостинг
Общее пространство на одном компьютере, которое регулируется единственным администратором и предлагает клиентам пользоваться ресурсами выбранной машины дешевле, но вместе с тем лишиться ряда функций и независимости.
VDS
Виртуальный выделенный сервер. Имитация реального «железа» с помощью гипервизора. Каждый арендатор получает практически полноценный ПК, несмотря на то, что чисто технически и физически это не так. Ограничений VDS практически не имеет. Можно ставить Windows Server и даже контролировать параметры BIOS.
VPS
То же самое, что и VDS. Только с иной технологией виртуализации. Более дешевой и ограниченной даже в плане программного обеспечения. Сюда нельзя установить Windows, только дистрибутивы Linux.
Как другие компьютеры подключаются к серверу?
VPS, VDS и любой другой сервер так же, как и обычные компьютеры, подключается к сети через кабельное соединение. Попав в интернет, он тут же становится доступен другим пользователям.
Подключение со стороны клиентов происходит разными путями в зависимости от того, что представляет собой сервер. Если на нем базируется веб-сайт, то в роли клиента выступает браузер, который через доменное имя подключается к VDS и получает от него нужную пользователю информацию. Доменное имя, естественно, моментально транслируется в стандартный IP-адрес. И адрес может оставаться прежним, даже если домен был в какой-то момент изменен.
В других случаях это работает похожим образом. Разве что аспекты работы программ, подключаемых к удаленным «машинам», могут слегка варьироваться.
Где находятся серверы?
Я уже упомянул выше хостинг-провайдеров. У них. Хостинг — это компания, которая фокусируется на обеспечении своих клиентов серверными мощностями. Обычно они арендуют крупное здание, в котором располагаются сотни и тысячи ПК с различными видами «железа» и виртуальными «машинами» на них.
Эти компьютеры надежно охраняются наемной охраной, датчиками движения, системами защиты от пожара и прочими решениями в зависимости от того, какие угрозы предвидит провайдер.
Программная защита тоже играет роль. Хостинг обязан сохранять конфиденциальность клиентов, оберегать их VDS от вирусов и атак извне. Регулярно делать резервные копии данных каждого арендатора, чтобы даже в случае форс-мажора можно было бы восстановить максимум полезной информации и файлов.
Также значимую роль играет геолокация. От расположения дата-центра зависит скорость работы проектов, базированных на удаленном ПК. Игровой сервер, расположенный в Варшаве, будет быстрее и стабильнее для жителей Европы, чем аналогичный в условном Мурманске. Ну и подчиняются такие серверы законам разных стран.
Можно ли использовать любой компьютер в качестве сервера?
Да. Хоть ноутбук в сервер превращайте. Всего-то надо установить подходящее программное обеспечение. Поставил FTP-клиент, вот тебе и хранилище файлов. Поставил ПО для старта игровых платформ, вот тебе очередная площадка для игры в World of Warcraft. С хостингом веб-сайтов ситуация аналогичная.
Правда, нужно учесть ряд моментов:
Отличия сервера от обычного компьютера
И тот, и другой работают на идентичной архитектуре процессора. Только в серверные «машины» устанавливается несколько гнезд под чипы. То есть на одной материнской плате «живут» 2, 3, 4, а то и более процессора. Также на них используется память с системой коррекции ошибок.
На них устанавливаются запасные компоненты с предохранителями. На тот случай, если один из сетевых кабелей выйдет из строя, его работу на себя возьмет второй. С блоками питания схожая история. Лишившись питания от него, ПК получит нужную энергию от запасного. Предусмотреть подобное в домашних условиях на обычном компьютере тяжело.
Визуально серверы тоже отличаются. В дата-центрах их монтируют в компактные блоки. Дизайн же домашних системных блоков не предусматривает портов, систем быстрой замены компонентов и других особенностей удаленных «машин».
Программное обеспечение тоже отличается. Нужна платформа, лицензированная для работы в качестве виртуальной машины. Ну и зачастую на них стоят дистрибутивы Linux без графической оболочки с минимальным необходимым набором приложений.
Как выбрать подходящий сервер?
Есть куча аспектов, на которые надо обращать внимание. Но я бы предложил положиться на хорошего хостинг-провайдера. Он знает свое дело. Предложит подходящее «железо», обеспечит необходимым программным обеспечением.
Можно зайти на главную страницу Timeweb и спокойно выбрать доступный вариант. Можно купить виртуальный хостинг, если грядет мелкий проект, не требующий особого контроля. Можно купить VDS, чтобы сэкономить на покупке выделенного сервера, но при этом получить доступ к расширенным функциям. Для тех, кто строит онлайн-магазин или собрался открывать игровой сервер, есть выделенные «машины». Причем все они учитывают современные реалии. Есть защита от DDoS-атак, ежедневное резервное копирование, круглосуточная техподдержка и физическая защита дата-центров от любой неприятности.
Так что в первую очередь обращайте внимание на репутацию хостинга. Затем рассматривайте его предложения и не беспокойтесь о других технических аспектах.
В России произвели первую партию серверов «Яндекса»
«Яндекс» и компании-партнеры выпустили первую партию серверов, произведенных в России. Такие устройства уже установлены в дата-центрах для расширения возможностей «Яндекс.Облака» и в суперкомпьютерах IT-гиганта.
В компании отметили, что серверы разработаны для установки в центрах обработки данных. Устройства не требуют активной системы охлаждения и могут работать при 40 градусах тепла. Такая особенность позволяет экономить на обслуживании ЦОД и сократить потребляемую энергию. Работу нового оборудования можно рассмотреть на примере дата-центров «Яндекса» в Мянтсяля и во Владимире, в которых уже установлены серверы нового поколения. Стоит отметить что средний PUE-показатель в этих ЦОД составляет 1,1, а средний по миру — 1,59.
Серверы стали первым промышленным вычислительным оборудованием произведенным в России, которое построено на процессорах AMD EPYC Milan наряду с Intel Ice Lake.
Уже установленное серверное оборудование от «Яндекса» и партнеров
Партия была произведена силами совместного предприятия «Яндекса», группы компаний «Ланит», банка ВТБ и производителя компьютерных комплектующих Gigabyte. В качестве производственного цеха использовали завод «АЛТ Мастер» на территории Зеленограда. В следующем году компании общими силами запустят собственный завод под Рязанью. Завод расположится в индустриальном парке «Рязанский». На базе предприятия планируется выпускать не только серверы, но и системы хранения данных, гаджеты для умного дома и Zigbee-шлюзы. На первом этапе в совместное предприятие инвестируют более 1 млрд рублей.
Впервые компании заявили о создании совместного предприятия для производства вычислительного оборудования в июне 2021 года. СП подразумевает открытие центра разработок, который проектирует техническую продукцию и предлагает ее для продажи за рубежом. Сейчас компании заявили о том, что серверы их производства под брендом Openyard будут доступны для покупки другими компаниями уже в следующем году.
Как выглядит сервер
Он может быть размером со шкаф или со спичечный коробок
Мы постоянно слышим про серверы в интернете: как на них что-то установить, как настроить, как подключиться. Но что физически собой представляет сервер?
Раньше это были огромные шкафы, набитые электроникой, а сейчас сервером может стать даже одноплатный компьютер. Рассказываем, как такое возможно и чем отличается сервер от обычного компьютера.
Что есть сервер
У слова «сервер» два значения:
Мы сегодня говорим о компьютерах. О программах мы говорим в другом цикле →
Что делают серверы
Главная задача сервера — выполнять запросы пользователей. Пользователи называются клиентами, как клиенты в ресторане. Они отправляют на сервер запрос, а тот должен его исполнить по правилам, которые прописаны в его софте.
Например, запросы могут быть такими:
А вот как серверы могут реагировать:
Получается, что всё, что делает сервер, — это получает запросы и реагирует на них. Больше никакой магии в серверах нет.
Сервер в стойке
Наверняка вы видели такое в фильмах про хакеров или в новостях по телевизору про дата-центры и инновации: много проводов, мигают лампочки и размером с хороший советский шкаф. Обычно это выглядит примерно так:
Но на самом деле это не сервер, а серверная стойка — специальный железный ящик, куда вкручиваются серверы — широкие и плоские компьютеры:
Именно такой плоский компьютер и есть сервер, а не вся стойка целиком. У такого компьютера могут быть разъёмы для клавиатуры и монитора, но их подключают, только когда что-то сломалось. Обычно в сервер просто втыкают сетевой кабель и настраивают всё через консоль.
А стойки нужны, чтобы серверы было удобно хранить и размещать в помещениях, или соединять несколько серверов в один большой суперкомпьютер для сложных задач. Также стойку проще охлаждать, запитывать и обслуживать, чем груду отдельно стоящих компьютеров.
Обычный компьютер в виде сервера
Обычный системник, который стоит дома, тоже может быть сервером, если его подключить к интернету и научить обрабатывать запросы.
Например, примером такого сервера может быть домашнее файловое хранилище:
В итоге вы получите полноценный сервер, задачей которого будет собирать, хранить, а потом отдавать вам по запросу ваши файлы.
Одноплатный сервер
У сервера может быть и такая задача: собирать данные с погодных датчиков, обрабатывать их, получать данные с соседних серверов и присылать каждый час в телеграм самый точный прогноз.
Для этого не нужен ни сервер в стойке, ни даже системник — достаточно простого одноплатного компьютера на линуксе. Под такие задачи хватит и слабого железа, тем более что разместить его можно где угодно, энергии ест мало и работает бесшумно. Главное — чтобы было подключение к интернету.
Компьютер Onion Omega 2+ — одноплатник, на котором можно запустить Linux
Зачем нам так много серверов?
У каждого сервера своя задача: одни хранят фотки, другие — любые файлы, третьи обслуживают соцсети, четвёртые нужны для работы госучреждений, на пятых крутятся игровые комнаты и так далее.
Общее правило такое — под более-менее важную для проекта задачу делают отдельный сервер. А так как задач у людей много, то и серверов, которые решают эти задачи, тоже много.
Что такое сервер и для чего он нужен
Содержание
Содержание
Сегодня сервера используются везде, от предприятий и промышленных комплексов, до государственных и военных структур.
Нередко можно услышать фразы вроде «правительственные сервера» или «сервера компании, бренда».
Для многих сервер — это просто корпоративный компьютер, предназначенный для обработки и хранения информации, но это не совсем так.
Ликбез для чайников
Каждый сервер запускается для выполнения определенных задач, вот некоторые из них:
Существуют сервера для рендера, майнинга, разнообразных облачных технологий и научных исследований.
Каждый сервер требует индивидуальной конфигурации, подбора оборудования и комплектующих.
Понятным языком — что такое сервера, для чего нужны
Сервер — компьютер, подключенный по локальной или внешней сети, к которому периодически обращаются другие компьютеры, именуемые клиентами.
Не каждый сервер стоит на серверном программном обеспечении и состоит из серверных комплектующих, но каждый сервер находится в одной сети с другими компьютерами.
Серверные системы отличаются от стационарных ПК, и служат для выполнения иных задач.
Для корпоративных и коммерческих целей собираются полноценные серверные платформы. Такие сборки отличаются от десктопов серверными процессорами, материнскими платами и даже оперативной памятью.
Серверные процессоры отличаются от десктопных по нескольким показателям:
В последние годы, компания AMD стала выпускать как серверные, так и десктопные модели процессоров с одинаковым количеством потоков и ядер, в то время как Intel не отступает от производственных стандартов.
Модель процессора | AMD EPYC 7742 | AMD Ryzen Threadripper 3990X | Intel Xeon Platinum 8380HL | Intel Core i9-10980XE Extreme Edition |
Платформа | Сервер | Десктоп | Сервер | Десктоп |
Количество ядер | 64 | 64 | 28 | 18 |
Количество потоков | 128 | 128 | 56 | 36 |
Базовая тактовая частота процессора | 2.3 ГГц | 2.9 ГГц | 2.9 ГГц | 3.0 ГГц |
Максимальная тактовая частота процессора | 3.4 ГГц | 4.3 ГГц | 4.3 ГГц | 4.8 ГГц |
Кэш-память | 256 МБ | 256 МБ | 38.5 МБ | 24.75 МБ |
Макс. объем памяти | 4 ТБ | 1 ТБ | 4.5 ТБ | 256 ГБ |
Макс. число каналов памяти | 8 | 4 | 6 | 4 |
Макс. пропускная способность памяти | 190.7 ГБ/с | 95.37 ГБ/с | 187.2 ГБ/с | 94 ГБ/с |
Учитывая объемы ОЗУ, устанавливаемые на серверные сборки, десктопная версия операционной системы подойдет далеко не всем предприятиям.
Например, Windows 10 в 2020 году ограничена двумя терабайтами ОЗУ, при этом Windows Server 2019 способна работать при 24 терабайтах оперативной памяти.
Основной задачей серверных систем является обработка максимальных объемов информации в кратчайшие сроки.
На серверах обычно хранят и редактируют данные, устанавливают производственное программное обеспечение и производят расчеты.
Как понять, что вашему малому предприятию (или не малому) пора обзавестись собственным сервером
В чем собственный сервер может помочь предприятию?
Если предприятие нуждается в подобных услугах, то пора обзавестись собственным сервером.
Почему появились асинхронные веб-сервера?
Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.
Помимо преподавания, как вы могли заметить, я занимаюсь написанием авторского материала для блога OTUS на хабре и сегодняшнюю статью хочу приурочить к запуску курса «Администратор Linux», на который прямо сейчас открыт набор.
Введение
Почему веб-приложение тормозит и не держит нагрузку? Разработчики, которые первыми столкнулись с таким вопросом и провели исследования некоторых систем, пришли к неутешительному выводу о том, что оптимизации одной бизнес-логики будет недостаточно. Ответ на поставленный вопрос кроется на более низком уровне — на уровне операционной системы. Чтобы ваше приложение держало нагрузку, необходимо пересмотреть его архитектурную концепцию таким образом, чтобы эффективно работать именно на этом уровне. Это привело к возникновению асинхронных веб-серверов.
К сожалению, мне не удалось найти ни одного материала, позволяющего восстановить разом все причинно-следственные связи в эволюции веб-серверов. Так возникла идея написания этой статьи, которая, как я надеюсь, станет таким материалом.
Особенности работы ОС Linux
Перед тем, как говорить о моделях веб-серверов, я позволю себе напомнить некоторые особенности работы процессов и потоков в ОС Linux. Это понадобится нам при анализе преимуществ и недостатков вышеупомянутых моделей.
Переключение контекста
Скорее всего, у любого пользователя, знающего, что на одном процессорном ядре единовременно может выполняться только одна программа, возникает вопрос: «Почему на моем 4-хядерном процессоре одновременно может быть запущено 20 программ?».
На самом деле, это связано с тем, что имеет место вытесняющая многозадачность. Операционная система выделяет некоторый квант времени (
50 мкс) и ставит программу на выполнение на ядро в течении этого времени. После того, как время истекает, происходит прерывание и переключение контекста (context switch). То есть операционная система просто ставит на выполнение следующую программу. Поскольку переключения происходят часто, у нас создается впечатление, будто все программы работают одновременно. Обратите внимание на высокую частоту переключения, это будет важно для последующего изложения.
Выше было упомянуто переключение контекста. Что же оно в себя включает? При переключении контекста необходимо сохранить регистры процессора, очистить его конвейер команд, сохранить регионы памяти, выделенные процессу. В общем-то, операция достаточно дорогая. Она занимает
0.5 мкс, тогда как выполнение простой строчки кода
1 нс. Причем при увеличении числа процессов, приходящихся на одно процессорное ядро, overhead на переключение контекста увеличится.
Модели веб-серверов
На данный момент существуют следующие модели веб-серверов:
Давайте обсудим каждую из них отдельно.
Worker и prefork
Исторически с данных моделей все и начиналось. Суть очень простая: к нам приходит клиент, мы выделяем для него отдельный обработчик, который обрабатывает пришедшего клиента от начала и до конца. Обработчиком может быть как процесс (prefork), так и поток (worker). Примером такого веб-сервера может послужить известный Apache.
Сразу оговорюсь: создавать новый обработчик на каждого клиента — это дорого. Во-первых, при неизменном количестве ядер рост числа обработчиков приводит к увеличению latency (из-за context switch’ей). Во-вторых, необходимый объем памяти растет с увеличением клиентов линейно, потому что даже если вы используете разделяющие память потоки, стек у каждого потока свой. Таким образом, число обрабатываемых одновременно клиентов ограничено размером пула, который, в свою очередь, зависит от числа процессорных ядер. Проблема решается использованием методов вертикального масштабирования.
Еще один фундаментальный недостаток таких серверов заключается в неоптимальном использовании ресурсов. Процессы (или потоки) существенную часть времени простаивают. Представим себе следующую ситуацию: во время обработки клиента необходимо забрать какие-либо данные с жесткого диска, сделать запрос в базу данных или что-то записать в сеть. Поскольку в Linux’е чтение с жесткого диска является блокирующей операцией, процесс (или поток) зависнет в ожидании ответа, но при этом все равно будет участвовать в распределении процессорного времени.
Worker vs prefork
Worker и prefork имеют достаточно мало принципиальных различий. Потоки несколько экономнее по памяти, потому что они ее разделяют. По этой же причине context switch между ними легче, чем между процессами. Однако в случае worker’а код становится многопоточным, ведь потоки необходимо синхронизировать. Как следствие, мы получаем все «прелести» многопоточного кода: его становится сложнее писать, читать, тестировать и дебажить.
Асинхронная модель
Итак, worker и prefork не позволяют обрабатывать одновременно большое количество клиентов из-за ограниченности размера пула, а также не оптимально используют ресурсы из-за переключения контекста и блокирующих системных вызов. Как видите, проблема заключается в многопоточности и тяжелом планировщике ОС. Это приводит к следующей идее: давайте обрабатывать клиентов всего лишь в одном потоке, но пусть он будет загружен на все 100%.
Такие сервера основаны на событийном цикле и шаблоне reactor (машина событий). Клиентский код, инициируя операцию I/O, регистрирует callback в очереди с приоритетом (приоритет- время готовности). Цикл событий опрашивает дескрипторы, ожидающие I/O, а затем обновляет приоритет (в случае готовности). Помимо этого, цикл событий вытаскивает события из очереди с приоритетом, вызывая callback’и, возвращающие в конце управление циклу событий.
Такая модель позволяет обрабатывать большое количество клиентов, избегая overhead’а на переключение контекста. Эта модель не идеальна и обладает рядом недостатков. Во-первых, потребляется не более одного процессорного ядра, потому что процесс один. Это лечится применением комбинированной модели, о которой пойдет речь ниже. Во-вторых, клиенты связаны между собой этим процессом. Код необходимо писать аккуратно. Утечки памяти, ошибки приводят к тому, что отваливаются все клиенты сразу. К тому же, этот процесс не должен быть заблокирован чем либо, callback не должен заключаться в решнии каких-то тяжелых задач, потому что будут заблокированы все клиенты. В-третьих, асинхронный код существенно сложнее. Необходимо регистрировать дополнительный callback на то, что данные не придут, решать вопрос с тем, как правильно сделать ветвление и т.д.
Комбинированная модель
Данная модель применяется в реальных серверах. В такой модели имеется пул процессов, каждый из которых имеет пул потоков, каждый из которых, в свою очередь, использует модель обработки на основе асинхронного ввода-вывода. Nginx представляет комбинированную модель.
Вывод
Таким образом, мы, обратившись к основам работы операционной системы, рассмотрели концептуальные различия моделей веб-серверов, используемых в Apache и Nginx. Каждая из них обладает своими преимуществами и недостатками, поэтому на production’е часто используется их комбинация.
Идея асинхронной обработки развивалась и дальше: на уровне языковых платформ возникли понятия green threads / fibers / goroutines, которые позволяют «спрятать под капот» асинхронность ввода и вывода, оставив разработчика довольным красивым синхронным кодом. Впрочем, эта концепция заслуживает отдельной статьи.