что такое сервер twhkmo

Что такое name-серверы (NS)

DNS-сервер (Name-сервер, nameserver, NS) — сервер, преобразующий доменные имена, с которыми работают пользователи, в понятные компьютерам IP-адреса или в обратном направлении. Обычно не делают разницы между понятиями NS и DNS-серверов.

Какие функции выполняет name-сервер?

Привычные пользователям домены не являются настоящими адресами хостов в сети, для идентификации которых на практике используются IP-адреса. Работа с ними неудобна для пользователей, поэтому применяется система DNS-серверов. Они выполняют несколько базовых функций.

Существует 3 основных типа DNS-серверов:

Что такое дочерние NS-серверы?

Дочерние DNS-серверы настраиваются на основе используемого родительского домена. Например, для example.net дочерние NS будут выглядеть так:

Дочерние DNS-серверы позволяют расположить DNS-серверы для домена на его поддоменах.

При делегировании домена с использованием дочерних DNS-серверов потребуется помимо их имен указать и IP-адреса.

Какие бывают ресурсные записи для домена?

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

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

Базовые типы записей, с которыми работают администраторы и владельцы сайтов:

Корректность заполнения ресурсных записей важна для успешного делегирования домена и дальнейшего функционирования службы name-серверов. Главное правило оформления NS-записей — не забывать ставить точку после имени. В противном случае возможны ошибки и служба DNS не сможет направить запрос по правильному адресу.

Какие DNS-серверы необходимо указывать для домена?

Список DNS-серверов услуг RU-CENTER вы найдете в статье.

Источник

Как выбрать оптимальное серверное решение и не ошибиться

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

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Выбор из трех сегментов: Enterprise, SMB, SoHo

Сегодня достаточно широко распространена система разделения серверного оборудования по его качеству, надежности и предназначению на несколько сегментов. Лучше всего ее можно сформулировать так:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Оборудование SoHo проще, его стоимость меньше, и оно больше подходит для решения несложных задач. Как правило, производительную и надежную IT-инфраструктуру из оборудования уровня SoHo не строят, так как оно лучше подходит для домашних и офисных сетей, предназначенных для небольших нагрузок и способных объединить в себе лишь небольшое число хостов.

С другой стороны, реалии таковы, что иногда именно небольшому предприятию выгоднее будет использовать небольшое количество оборудования уровня Enterprise со всей его высокой отказоустойчивостью, достаточной масштабируемостью и отличным уровнем сервиса/технической поддержки, тогда как некоторые сравнительно большие предприятия смогут обойтись, сэкономив, и SMB уровнем – ведь совокупная стоимость владения оборудованием и ПО не сводится только к их закупке. Также в неё входит содержание, обслуживание и ремонт оборудования, плюс, конечно же, потери от простоев. Ну а огромные корпорации могут создавать собственные серверные и даже ЦОДы, комбинируя оборудование всех уровней в своей инфраструктуре.

Чтобы определиться с выбором оборудования вам необходимо:

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

«Большая тройка»

Главные представители сегмента – всем известная «Большая тройка»: Hewlett-Packard, IBM (Lenovo) и Dell, предлагающие элитное оборудование, созданное для обеспечения высокой производительности, а также удобства апгрейда и управления системой в целом, однако не лишенное недостатков. Их главным недостатком, несомненно, является стоимость приобретения данного оборудования, так как создание столь совершенной техники – дело далеко не дешевое.

Каждый вендор «Тройки» старается создать максимально отказоустойчивую и надежную систему, продумывая каждую мелочь и деталь. Как правило, данные производители жестко регламентируют поддерживаемые (и соответственно протестированные) своим железом комплектующие, попутно распространяя их в «канале». Поэтому у каждого производителя возникает целая экосистема из собственного софта и железа, произвольная замена которого может повлечь потерю в производительности. Но эти ограничения не заложены на уровне железа.

Также стоит помнить, что одним из главных достоинств этих вендоров является предоставляемый сервис (Care Pack HP, ProSupport Dell и ServicePac IBM). Это очень недешевая услуга, доступная в нескольких вариациях, некоторые из которых могут повысить стоимость оборудования в полтора-два раза. При таких затратах специалисты технической поддержки будут доступны 24/7 и время их отклика не будет превышать нескольких часов.

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

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

Кроме всего вышесказанного, дорогостоящее, мощное (и не всегда достаточно гибкое) оборудование из Enterprise-сегмента способно обеспечить своему владельцу избыточную отказоустойчивость, производительность и лишние сервисы.

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

Выбор из «Тройки»

Конкурентная борьба между членами «Большой Тройки» — это уже очень давнее высокотехнологическое соперничество. Администрация любого из этих гигантов – практически отдельная профессия, поэтому сравнить их достоинства и недостатки довольно сложно. В общем виде они выглядят так:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Чтобы не только на словах, но и на деле продемонстрировать эти различия, давайте рассмотрим несколько мощных серверов от «Тройки» в форм-факторе 1U, идеально подходящих для виртуализации (и их б/у-аналоги – где возможно их подобрать):

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Виртуализация предъявляет больше всего требований к вычислительной мощности сервера, и наличие в линейке у того или иного производителя сервера под виртуализацию довольно показательно. Наиболее изящное решение, мощное и недорогое, из представленных предлагает HP, хотя сервер Dell способен на большее, но и стоит он в полтора раза больше. Самым дорогим получился сервер Lenovo – в нем меньше слотов для оперативки, но достаточно мощные процессоры.

SMB или Enterprise?

Supermicro – нишевый игрок

Главным и наиболее популярным игроком в SMB-сегменте является компания Supermicro, которой фактически удалось воплотить универсальный конструктор, совместимый с самыми разнообразными компонентами. На этой платформе можно строить что угодно из чего угодно, а утверждение, что его серверы менее надежны и выходят из строя чаще, чем оборудование «Тройки», всегда наталкивается на отсутствие статистики и возражения армии довольных пользователей бренда. Так что именно при упоминании о Supermicro встает вопрос – SMB ли это или Enterprise? Пока что больше голосов раздается в пользу первого варианта, но, может быть, это просто сила инерции мышления?

У Supermicro также присутствует свой интерфейс управления серверами в условиях отсутствия физического доступа к ним – IPMI, который хоть и не может похвастаться таким же богатым функционалом как у «Тройки», однако может показать системные логи, отрегулировать скорость оборотов вентиляторов и предоставить доступ к iKVM Console Redirection.

Да, полная поддержка удаленной прошивки некоторых комплектующих в платформах Supermicro отсутствует (например, дискретного Raid контроллера или сетевой карты). Слишком уж большое количество различного железа можно в ней использовать, и просчитать все ситуации комплектации, как это делается в Enterprise-сегменте, в данном случае невозможно. Но именно это и обеспечивает гибкость платформы, которой так недостает «Тройке».

Однако не раз мы встречались с ситуациями, когда некоторые отдельные части платформы, — блоки питания, вентиляция, бэкплейн, — у Supermicro подводили. Чтобы добиться достаточной отказоустойчивости системы исключительно на Supermicro, инфраструктуру можно резервировать, продублировав каждый сервер, и в сумме это может оказаться дешевле приобретения аналогичной платформы от «Тройки». Справедливости ради стоить заметить, что это вдвое увеличит затраты на охлаждение, электропитание и их обслуживание в целом.
Элементарная логика подсказывает очевидное решение: важные/критические для компании сервисы разворачиваются на оборудовании (серверах) уровня enterprise, менее важные – на серверах SMB-уровня. Тут, конечно, все должно зависеть от конкретной ситуации, и ваше решение должно опираться на возможности вашего бюджета и оценку рисков.

Другой частый лайфхак, в котором нет минусов удвоенного питания и охлаждения – использовать целые запасные серверы Supermicro для холодной замены, только вынимать не отдельный блок питания/диск, а целый rack разом. Такой трюк с оборудованием от «Тройки» вряд ли имеет смысл.

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Опять обращаясь к конкретным примерам, вспомним мощную сборку сервера виртуализации Supermicro Team Server R1-E54 (1U), 2хE5-4600 v2 (12 ядер), до 1024ГБ, блок питания 1400W. Стоит он от 167 000 рублей, но при этом по мощности и потенциалу свободно конкурирует с «Большой тройкой».

Правда, покупать в ЗИП такой сервер будет уже накладно. А вот упомянутую нами выше модель б/у сервера за те же деньги можно купить одну в работу и одну про запас — мощность у них сопоставимая.

Fujitsu – свой среди чужих, чужой среди своих

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

Она пока не настолько известна, как «Тройка» или Supermicro, но ее представители утверждают, что она занимает четвертое место на мировом серверном рынке и первое на японском (хотя по данным некоторых источников, на местном рынке ее теснит компания NEC – в 13 году доля Fujitsu на японском рынке серверов на процессорах x86 была на 5% меньше, чем NEC). Fujitsu всеми доступными средствами рвется присоединиться к «Большой Тройке», стараясь не уступать ни в отказоустойчивости производимого оборудования, ни в масштабируемости, ни в сервисе.

В отличие от SM, Futjitsu имеет представительство в России и старается создать сервис, максимально приближенный к предлагаемому «Тройкой» — Support Pack, который в расширенном виде также предполагает круглосуточную техподдержку, быструю реакцию, вызов специалистов и продление гарантийного срока. Кроме того, компания также готова заключить с клиентами Solution Contract, обеспечивающий поддержку и настройку программного обеспечения в соответствии с нуждами определенного проекта, мониторинг оборудования специалистами компании и рекомендации по расширению или улучшению инфраструктуры.

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Мощный современный сервер виртуализации Fujitsu Primergy RX2530M1 (1U), 2xE5-2600v3 (6 ядер), до 1536ГБ, 2 блока питания мощностью 450 Вт/800 Вт стоит всего 112 694 рублей. Обходит по возможностям оперативной памяти соответствующие сборки Supermicro, может быть немного «провисает» в мощности процессора, но зато стоит сравнительно дешево, тогда как производитель заявляет об отказоустойчивости уровня «Тройки».

К сожалению, наработанной репутации у этого бренда в нашей стране еще просто нет, так что определить его положение между «Тройкой», за которой он якобы идет во всем мире, и Supermicro, которую поддерживает своим кошельком целая армия поклонников, сложно. Возможно, кто-нибудь увидит для себя возможность при выборе этой платформы неплохо сэкономить попросту на договоренностях с компанией о скидках, но в этом придется надеяться на собственную деловую хватку.

Суммируя сказанное

Итак, если для вас ключевым параметром при выборе является отказоустойчивость, если вы уже сейчас понимаете, что систему точно придется масштабировать, а возникшие проблемы решать максимально быстро — выбирайте из «Большой Тройки». Скорее всего меньше всего затрат будет с Lenovo, в HP наверняка получится найти хорошее сочетание стоимости с производительностью (и жесткое ограничение по железу) — однако тут уже исходить нужно из конкретно стоящих задач.

Если хочется сэкономить и получить мощное производительное оборудование — стоит подумать о системе на основе платформы Supermicro, однако в таком случае перед вами будет стоять задача (вполне, как мы показали, решаемая) обеспечения отказоустойчивости. То же можно сказать, если у вас недостаточно финансирования для «Тройки» — и в таком случае можно подумать над альтернативными платформами, которые меньше представлены у нас в стране, но ценятся в мире — например, Fujitsu.

А с какими достоинствами и недостатками оборудования этих вендоров сталкивались вы?

Источник

Как выглядит сервер

Он может быть размером со шкаф или со спичечный коробок

Мы постоянно слышим про серверы в интернете: как на них что-то установить, как настроить, как подключиться. Но что физически собой представляет сервер?

Раньше это были огромные шкафы, набитые электроникой, а сейчас сервером может стать даже одноплатный компьютер. Рассказываем, как такое возможно и чем отличается сервер от обычного компьютера.

Что есть сервер

У слова «сервер» два значения:

Мы сегодня говорим о компьютерах. О программах мы говорим в другом цикле →

Что делают серверы

Главная задача сервера — выполнять запросы пользователей. Пользователи называются клиентами, как клиенты в ресторане. Они отправляют на сервер запрос, а тот должен его исполнить по правилам, которые прописаны в его софте.

Например, запросы могут быть такими:

А вот как серверы могут реагировать:

Получается, что всё, что делает сервер, — это получает запросы и реагирует на них. Больше никакой магии в серверах нет.

Сервер в стойке

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Но на самом деле это не сервер, а серверная стойка — специальный железный ящик, куда вкручиваются серверы — широкие и плоские компьютеры:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Именно такой плоский компьютер и есть сервер, а не вся стойка целиком. У такого компьютера могут быть разъёмы для клавиатуры и монитора, но их подключают, только когда что-то сломалось. Обычно в сервер просто втыкают сетевой кабель и настраивают всё через консоль.

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

Обычный компьютер в виде сервера

Обычный системник, который стоит дома, тоже может быть сервером, если его подключить к интернету и научить обрабатывать запросы.

Например, примером такого сервера может быть домашнее файловое хранилище:

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Одноплатный сервер

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

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

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmoКомпьютер Onion Omega 2+ — одноплатник, на котором можно запустить Linux

Зачем нам так много серверов?

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

Общее правило такое — под более-менее важную для проекта задачу делают отдельный сервер. А так как задач у людей много, то и серверов, которые решают эти задачи, тоже много.

Источник

Что такое сервер и для чего он нужен

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Содержание

Содержание

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

Нередко можно услышать фразы вроде «правительственные сервера» или «сервера компании, бренда».

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

Ликбез для чайников

Каждый сервер запускается для выполнения определенных задач, вот некоторые из них:

Существуют сервера для рендера, майнинга, разнообразных облачных технологий и научных исследований.

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

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

Понятным языком — что такое сервера, для чего нужны

Сервер — компьютер, подключенный по локальной или внешней сети, к которому периодически обращаются другие компьютеры, именуемые клиентами.

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

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

Серверные системы отличаются от стационарных ПК, и служат для выполнения иных задач.

Для корпоративных и коммерческих целей собираются полноценные серверные платформы. Такие сборки отличаются от десктопов серверными процессорами, материнскими платами и даже оперативной памятью.

Серверные процессоры отличаются от десктопных по нескольким показателям:

В последние годы, компания AMD стала выпускать как серверные, так и десктопные модели процессоров с одинаковым количеством потоков и ядер, в то время как Intel не отступает от производственных стандартов.

Модель процессораAMD EPYC 7742AMD Ryzen Threadripper 3990XIntel Xeon Platinum 8380HLIntel Core i9-10980XE Extreme Edition
ПлатформаСерверДесктопСерверДесктоп
Количество ядер64642818
Количество потоков1281285636
Базовая тактовая частота процессора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 ГБ
Макс. число каналов памяти8464
Макс. пропускная способность памяти190.7 ГБ/с95.37 ГБ/с187.2 ГБ/с94 ГБ/с

Учитывая объемы ОЗУ, устанавливаемые на серверные сборки, десктопная версия операционной системы подойдет далеко не всем предприятиям.

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Например, Windows 10 в 2020 году ограничена двумя терабайтами ОЗУ, при этом Windows Server 2019 способна работать при 24 терабайтах оперативной памяти.

Основной задачей серверных систем является обработка максимальных объемов информации в кратчайшие сроки.

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

Как понять, что вашему малому предприятию (или не малому) пора обзавестись собственным сервером

В чем собственный сервер может помочь предприятию?

Если предприятие нуждается в подобных услугах, то пора обзавестись собственным сервером.

Источник

Свой асинхронный tcp-сервер за 15 минут с подробным разбором

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Ранее я представил пару небольших постов о потенциальной роли Spring Boot 2 в реактивном программировании. После этого я получил ряд вопросов о том, как работают асинхронные операции в программировании в целом. Сегодня я хочу разобрать, что такое Non-blocking I/O и как применить это знание для создания небольшого tcp–сервера на python, который сможет обрабатывать множество открытых и тяжелых (долгих) соединений в один поток. Знание python не требуется: все будет предельно просто со множеством комментариев. Приглашаю всех желающих!

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

Начнем с написания очень простого tcp–сервера. Задача сервера будет заключаться в получении и печати данных из сокета и возвращения строки Hello from server!. Примерно так это выглядит:

Здесь все довольно просто. Если вы не знакомы с понятием сокета, то вот очень простая и практическая статья. Мы создаем сокет, ловим входящие соединения и обрабатываем их согласно заданной логике. Здесь стоит обратить внимание на сообщения. При создании нового соединения с клиентом мы пишем об этом в консоль.

Хочу сразу заметить, что не стоит серьезно вникать в листинги программ до полного прочтения статьи. Совершенно нормально, если что-то будет не совсем понятно в самом начале. Просто продолжайте чтение.

Нет особого смысла в сервере без клиента. Поэтому на следующем этапе необходимо написать небольшой клиент для использования сервера:

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

Давайте запустим сервер. Первое, что мы видим:

Это означает, что мы успешно запустили наш сервер и он готов принимать входящие запросы. Запустим клиент и сразу увидим в консоли сервера (у вас порты могут быть другими):

Что и следовало ожидать. В бесконечном цикле мы получаем новое соединение и сразу же обрабатываем данные из него. В чем тут проблема? Ранее мы использовали опцию server_socket.listen(10) для настройки сервера. Она означает максимальный размер очереди из еще не принятых подключений. Но в этом нет совершенно никакого смысла, ведь мы принимаем по одному соединению. Что предпринять в такой ситуации? На самом деле, существует несколько выходов.

Как можно понять по выводу, мы принимаем новые коннекты и данные почти параллельно. Более того, мы не ждем данных от нового подключения. Вместо этого мы устанавливаем новое.

Как это работает?

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

Рассмотрим, что происходит в первом случае и во втором.

Синхронный вызов

Давайте разберем рисунок:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

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

Асинхронный вызов

Теперь посмотрим на рисунок, который иллюстрирует асинхронный вызов:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Первая стрелка, как и в первом случае, делает запрос к ОС (операционной системе) на получение данных из ресурсов. Но посмотрите, что происходит далее. Мы не ждем данных из ресурса и продолжаем работу. Что же делать нам? Мы отдали распоряжение ОС и не ждем результат сразу. Простейшим ответом будет самостоятельно опрашивать нашу систему на наличие данных. Таким образом, мы сможем утилизировать ресурсы и не блокировать наш поток.

Но самом деле такая система не является практичной. Такое состояние, в котором мы постоянно смотрим на данные и ждем какого-то события, называется активным ожиданием. Минус очевиден: мы впустую тратим процессорное время в случае, когда информация не обновилась. Более правильным решением было бы оставить блокировку, но сделать ее «умной». Наш поток не просто ждет какого-то определенного события. Вместо этого он ожидает любое изменение данных в нашей программе. Именно так и работает функция select в нашем асинхронном сервере:

что такое сервер twhkmo. Смотреть фото что такое сервер twhkmo. Смотреть картинку что такое сервер twhkmo. Картинка про что такое сервер twhkmo. Фото что такое сервер twhkmo

Теперь можно вернуться к реализации нашего асинхронного сервера и взглянуть на него с новым знанием. Первое, что бросается в глаза, – метод работы. Если в первом случае наша программа выполнялась “сверху вниз”, то во втором случае мы оперируем событиями. Такой подход в разработке ПО называется событийно-ориентированным (event-driven development).

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

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *