По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:

C появлением термина «виртуализация», множество компаний начали массово мигрировать свой серверный ресурс с аппаратной на виртуальную платформу. В данной статье мы попробуем разобраться, что такое «виртуализация» и какие плюсы она несет в себе.
Современному бизнесу ежедневно приходится иметь дело с различными приложениями, будь то сервер CRM, корпоративный каталог (Active Directory) или сервер базы данных и т.д. В 8 из 10 случаев, серверный ландшафт имеет свойства гетерогенной среды, т.е каждое приложение имеет свою собственную операционную систему и нуждается в отдельном сервере. При условии дальнейшего масштабирования предприятия, крайне неэффективно и дорого продолжать закупку серверов.
На помощь приходит «виртуальный сервер», или, как чаще говорят – «виртуальная машина». Основной идеей виртуализации является развертывание различных приложений, с разными операционными системами поверх одного физического сервера. В тоже время, все виртуальные машины имеют функционал, аналогичный функционалу при развертывании на аппаратном сервере.
Ведущие вендоры в области виртуализации на сегодняшний день, это VMware, Hyper-V и Cirtix. Лидером по разработке виртуальных решений является VMware. Централизованное и удобное управление через VCenter, облегчает работу администратора в несколько раз.
У VMware разработан свой гипервизор – ESX(i). Гипервизор (Hypervisor) - важнейший компонент виртуализации, отвечающий за обеспечение существования нескольких виртуальных машин поверх разных операционных систем на одном физическом сервере. На рисунке ниже, схематически изображен принцип виртуализации.
Виртуализация серверов от компании Мерион Нетворкс
Помимо повышения эффективности использования IT – инфраструктуры, снижения затрат на покупку оборудования и найм персонала, хочется перечислить следующие преимущества виртуализации серверов:
Замена аппаратной составляющей на программное обеспечение
Незачем тратить юнит в стойке, можно развернуть виртуальную машину.
Унификация управления
Вы получаете централизованное управление всеми виртуальными серверами, что облегчает деятельность соответствующего персонала.
Снижение затрат на электроэнергию и охлаждение серверной комнаты
За счет уменьшения единиц серверного оборудование происходит снижение тепловыделения.
Консолидация управления операционными системами с помощью гипервизора
Возможность проводить апгрейд сервера не затрагивая приложения и не совершая перезагрузку
Возможность резервирования и создания отказоустойчивой конфигурации (snapshot)
Удобные средства для мониторинга перформансов в реальном времени

Давайте рассмотрим следующую ситуацию: Санта приносит игрушки всем хорошим девочкам и мальчикам.
На 2019 год в мире проживало 7 713 468 100 человек, около 26,3% из которых моложе 15 лет. Это 2 028 642 110 детей (лиц в возрасте до 15 лет) в мире.
Есть такое мнение, что Санта посещает детей не всех религий, поэтому мы обобщим и включим в рассмотрение только христиан и нерелигиозных людей. В совокупности это примерно 44,72% населения. Если мы предположим, что дети исповедуют ту же религию, что и родители, то получится, что Санта-Клаус должен посетить 907 208 751,6 детей.
Какой процент из этих детей хорошие? Это узнать невозможно; однако мы можем поработать с несколькими предположениями. Во-первых, Санта-Клаус действует больше из соображений оптимизма, а не экономии, так что, он, вероятно, был бы готов к возможности того, что каждый ребенок будет хорошим в любой год. Таким образом, он был бы готов дать игрушку каждому ребенку. Предположим, что это был отличный год и все 907 208 751,6 детей получили игрушки.
Подарков много, и, как мы знаем, все они сделаны эльфами Санты в его мастерской на Северном полюсе. Учитывая, что в году 365 дней, и один из них – Рождество, то будем считать, что у Санты есть 364 дня, чтобы сделать и упаковать 907 208 752 (округлим) подарка. Получается 2 492 331,74 подарка в день.
Почти два с половиной миллиона подарков в день – большая нагрузка для любой мастерской. Давайте рассмотрим два подхода, которые Санта может использовать, чтобы упаковать все подарки: конкурентное исполнение (конкурентность) и параллельное исполнение (параллелизм).
Последовательный процесс
Предположим, что в мастерской Санты-Клауса работает ровно один очень трудолюбивый и очень уставший эльф. Один подарок изготавливается за четыре этапа:
Раскрой дерева
Сборка и склейка игрушки
Роспись игрушки
Подарочная упаковка
Когда эльф только один, то в любой момент времени он может выполнять лишь один этап для одного подарка. Если бы эльф производил по одному подарку от начала и до конца, то этот процесс был бы последовательным. Но это не самый эффективный способ для того, чтобы изготовить два с половиной миллиона подарков за день. Например, эльфу придется ждать и при этом ничего не делать, пока клей на игрушке не высохнет, и он сможет перейти к следующему этапу.
Конкурентность
Для того, чтобы быть более продуктивным, эльф может работать над всеми подарками одновременно.
Вместо того, чтобы делать по одному подарку за раз, эльф сначала раскраивает всю древесину для всех игрушек, одну за другой. Когда все вырезано, эльф собирает и склеивает игрушки одну за другой. При такой одновременной обработки клей на первой игрушке успевает высохнуть (не требуя особого внимания со стороны эльфа), пока склеиваются другие игрушки. То же самое касается росписи и упаковки.
Так как один эльф может выполнять только одну задачу за раз, то, если он будет производить подарки одновременно, он будет использовать день максимально эффективно.
Параллелизм
Хотелось бы надеяться, что в мастерской Санты все же больше, чем один эльф. Чем больше эльфов, тем больше игрушек можно сделать одновременно в течение дня. Такая одновременная работа означает, что подарки производятся параллельно. Параллельная работа нескольких эльфов означает, что одновременно выполняется больше работы.
Эльфы, которые работают параллельно, также могут использовать конкурентность. Один эльф по-прежнему может решать только одну задачу за раз, поэтому самым эффективным вариантом будет иметь несколько эльфов, которые будут производить подарки одновременно.
Конечно, если в мастерской Санты, скажем, два с половиной миллиона эльфов, то тогда каждый эльф должен будет сделать максимум один подарок за день. В таком случае последовательная работа не снижает эффективности. И осталось бы еще 7 668,26 эльфов, которые приносили бы кофе и обед.
Санта-Клаус и многопоточность
После того, как эльфы выполнили всю тяжелую работу, Санта-Клаус должен доставить подарки – все 907 208 752.
Санте не нужно навещать каждого ребенка лично; только елку в доме. Итак, сколько же елок ему нужно посетить? Опять же, обобщая, мы скажем, что среднее количество детей в семье во всем мире составляет 2,45 (будем основываться на прогнозируемых коэффициентов рождаемости на этот год). Получается, что Санта должен посетить 370 289 286,4 дома. Давайте округлим до 370 289 287.
Сколько на это есть времени у Санты? Легенды гласят об одной ночи, что означает один оборот Земли, а, значит, 24 часа. NORAD это подтверждает.
Это значит, что Санта должен посетить 370 289 287 домов за 24 часа (86 400 секунд). Следовательно, его скорость должна составлять 4 285,75 домов в секунду, и мы еще не упоминали о, которое нужно для того, чтобы положить подарки под елку и взять печенье.
Понятно, что Санты в нашем измерении не существует. Хотя бы потому, что он достаточно пухлый и при этом он пролезает в дымоход (с зажженным огнем, оставаясь невредимым) с мешком игрушек для всех детей семьи. И это мы еще не учли тот факт, что его сани везут огромное количество игрушек для каждого верующего ребенка во всем мире и что они летают.
Существует ли Санта вне наших законов физики? Как мог кто-то реальный путешествовать по миру, доставляя посылки менее чем за 24 часа со скоростью 4 285,75 домов в секунду, и при это у него еще оставалось время на молоко, печенье и поцелуй мамочки?
Одно можно сказать наверняка: Санта пользуется Интернетом. Никакая другая технология еще не позволяла посылкам перемещаться так далеко и так быстро. Как бы там ни было, попытка охватить более четырех тысяч домов в секунду – непростая задача, даже имея в арсенале лучшее гигабитное Интернет-соединение, которое может предоставить Северный полюс. Как Санта может повысить свою эффективность?
Очевидно, что у этой загадки есть только один логичный ответ: Санта-Клаус – это многопоточный процесс.
Один поток
Давайте посмотрим на это все со стороны. Представим, что поток – это одна конкретная задача или детализированная последовательность инструкций, которую может выполнить Санта. Один поток может выполнить только одну задачу – положить подарок под елку. Поток – это некий компонент процесса, в данном случае процесса доставки подарков Санта-Клаусом.
Если бы Санта-Клаус был бы однопоточным, то он как любой однопоточный процесс мог бы выполнять лишь одну задачу за раз. Поскольку он стар и у него не такая хорошая память, то у него, вероятно, есть набор инструкций по доставке подарков, а также график, которого стоит придерживаться. Эти две вещи направляют поток Санты, пока его процесс не завершится.
Однопоточный Санта-Клаус работает примерно по следующей схеме:
Посадить сани у дома Тимми.
Достать подарок Тимми из саней.
Войти в дом через дымоход.
Найти рождественскую елку.
Положить подарок Тимми под рождественскую елку.
Выйти из дома через дымоход.
Взлететь на санях.
И так по кругу… еще 370 289 286 раз.
Многопоточность
Многопоточный Санта-Клаус, напротив, является доктором Манхэттеном Северного полюса. В мире существует все еще один Санта-Клаус, но у него есть удивительная способность размножить свое сознание и одновременно выполнять несколько наборов инструкций. Эти дополнительные рабочие задачи, или рабочие потоки, создаются и контролируются основным процессом доставки подарков Санта-Клауса.
Каждый рабочий поток действует независимо, выполняя свои инструкции. Так как все они являются копией сознания Санты, то у них есть его память, и они знают все, что знает Санта, в том числе то, как устроена планета, по которой они доставляют подарки, и откуда эти подарки брать.
Благодаря этим знаниям каждый поток может выполнять свой набор инструкций параллельно с другими потоками. Такой многопоточный параллелизм делает единственного и неповторимого Санта-Клауса максимально продуктивным.
Если в среднем выполнение доставки подарка занимает час, то Санте нужно создать всего 4 286 рабочих потоков. Совершая по одной доставке в час таким образом, Санта завершит все 370 289 287 поездок к концу ночи.
Конечно, чисто теоретически, Санта может создать даже 370 289 287 рабочих потоков, каждый из которых займется одним домом, чтобы доставить подарки всем детям! Это сделало бы Санту максимально продуктивны, а также объяснило бы, как ему удается съесть все эти печеньки с молоком, не объевшись. ????
Эффективное и счастливое многопоточное Рождество
Благодаря современным компьютерам мы наконец-то понимаем, как Санта-Клаус справляется с, казалось бы, невыполнимой задачей доставки игрушек хорошим девочкам и мальчикам по всему миру. От моей семьи вашей семье, я надеюсь, вы проводите отличное Рождество. И не за будьте повесить носки на полку маршрутизатора.
Конечно, все это никак не объясняет, как же все-таки северным оленям удается летать.

При изучении принципов написания программного кода вы, вероятно, встречались с термином AJAX и задавались вопросом, что же он значит. Что это – язык программирования, платформа или приложение? На самом деле ничего из перечисленного, но к концу прочтения этой статьи вы будете знать, что же такое AJAX (Asynchronous Javascript and XML - асинхронные сценарии JavaScript и XML).
История AJAX
До конца 1990-х годов большинство веб-сайтов могли выдавать в качестве результата только полные веб-страницы при посещении страницы на сайте. Иначе говоря, для того, чтобы перезагрузить какие-либо отдельные данные, вам необходимо было перезагрузить всю страницу.
Это был не самый эффективный способ предоставления информации пользователям, и, соответственно, не очень хорошо сказывалось на впечатлениях пользователей от взаимодействия с сайтом. Также это увеличивало нагрузку на серверы и пропускную способность, необходимую для обслуживания данных.
В 1996 году Microsoft представила тег iframe для Internet Explorer, который позволял браузеру асинхронно извлекать данные в фоновом режиме. Это был шаг в верном направлении на пути к современным веб-приложения.
В 2004 году Google добавила в Gmail функцию, позволяющую получать данные в фоновом режиме, а в 2005 году они сделали то же самое и для Google Maps.
Технологии Google и Microsoft позволяли разработчикам получать данные с веб-сервера с помощью JavaScript без необходимости перезагружать страницу. В 2005 году Джесси Джеймсон Гарретт в своей статье (о том, как Google добились такого результата) назвал эту технологию AJAX. Эта технология быстро стала одним из самых популярных способов создания веб-приложений.
А теперь, когда вы узнали немного из истории AJAX, давайте посмотрим, как это работает.
Как работает AJAX?
Что делает работу AJAX возможной, так это встроенный в веб-браузер объект XMLHttpRequests (XHR). Этот объект поддерживают все современные браузеры, включая:
Chrome
Firefox
IE7+
Safari
Opera
Большинство библиотек JavaScript, которые используют AJAX, помещают этот объект в пользовательский код для того, чтобы упростить его использование разработчиками, но мы рассмотрим, как AJAX работает в обычном JavaScript.
Первый шаг – создать переменную, которая будет создавать для вас экземпляр объекта XMLHttpReaquests в JavaScript. Ниже приведен пример:
const request = new XMLHttpRequest();
Поскольку мы хотим использовать эти данные в дальнейшем, например, хотим распечатать их на веб-странице, то мы добавим к этому запросу получатель запроса, который сообщит нам, когда наш запрос закончит обрабатываться и получит нужные данные.
Как можно понять из самого термина, запросы AJAX выполняются асинхронно. Это значит, что код JavaScript продолжает работать после отправки запроса и не ждет ответа. Прикрепив получатель запросов, мы можем перехватить ответ, когда он будет готов. Сделаем мы это вот так:
function requestListener() {
console.log(this.responseText);
}
request.addEventListener("load", requestListener);
Выше у нас есть функция, которая выводит ответ на консоль JavaScript, которую мы можем получить из атрибута responseText объекта XMLHttpRequests. Затем мы присоединяем эту функцию к событию load нашего запроса.
Следующий шаг – используем этот объект для отправки запроса к серверу с помощью метода open объекта XMLHttpRequests. Метод open принимает два параметра. Первый параметр – это используемый метод запроса. Ниже приведены несколько наиболее распространенных методов:
GET: этот метод используется для извлечения данных и является наиболее распространенным.
POST: этот метод отправляет данные запрошенному ресурсу и чаще всего используется для создания новых записей или для входа в систему.
PUT: этот метод заменяет текущие представления данных измененными, которые были отправлены в запросе.
PATCH: этот метод обычно используется для обновления части данных в запрошенном ресурсе.
DELETE: этот метод используется для удаления определенного ресурса.
Второй параметр, который передается методу open, - это запрашиваемый ресурс. Мы будем использовать страницу с веб-сайта example.org и использовать запрос GET для простого получения данных. Вот так это будет выглядеть:
request.open("GET", "http://www.example.org/example.txt");
Последний шаг – фактическая отправка запроса на удаленный ресурс с помощью метода send объекта XMLHttpRequests. Ниже приведен пример:
request.send();
Если мы используем метод POST, PUT или какой-либо другой метод, который обновляет ресурс, то этот метод мы вызываем с параметром, содержащем данные, которые мы отправляем:
request.send(OUR_DATA_VARIABLE)
В нашем случае мы только извлекаем данные, поэтому, как только мы выполним этот код, на консоли нашего веб-браузера выведется содержимое http://example.org/example.txt.
Данный пример помогает объяснить то, как работает AJAX, но на самом деле технология AJAX имеет куда более продвинутые функциональные возможности.
Для чего нужен AJAX?
Что вы должны были вынести из приведенного выше примера, так это то, что все функции кода загружаются на одной странице. Действительно, сначала загрузится веб-страница с нашим кодом JavaScript, затем он выполнится, и после он распечатает результаты запроса.
С таким же успехом можно было прикрепить приведенный выше код к функции, которая выполняется при нажатии кнопки. Это бы означало, что каждый раз при нажатии кнопки, будет выполняться код, отправляться запрос, и результаты будут выводиться на консоль без загрузки новой страницы.
И эта магическая технология изменила подход к веб-разработке. С появлением AJAX большая часть веб-разработки переместилась на внешний интерфейс приложения – часть, которая работает в браузере. Вы наблюдаете то, как работает AJAX ежедневно и даже не подозреваете об этом.
Когда вы заходите на современный веб-сайт, перед вами появляется форма. Вы вводите свои учетные данные и нажимаете кнопку «Войти». Индикатор загрузки может вращаться в течение нескольких минут, но если вы обратите внимание, то заметите, что страница на самом деле никогда не перезагружается. Все, что вы сделали, это просто отправили свое имя пользователя и пароль на сервер с помощью AJAX.
Индикатор загрузки нужен только для отвода глаз, пока запрос выполняется, независимо от того, ввели ли вы верные учетные данные или нет. Если ваши учетные данные верны, то ваша домашняя страница загружается, скорее всего, из другого запроса AJAX.
Большинство запросов AJAX в JavaScript не загружают целые веб-страницы, как в нашем примере. Данные отправляются и извлекаются в формате JSON, для представления данных используется текстовый формат, а для форматирования этих данных в формате HTML и их печати на странице используется дополнительный код JavaScript. Например, данные, которые отправляются для входа на веб-сайт, в формате JSON будут выглядеть так:
{ username: "MyUserName", password: "MyPassword" }
Как только учетные данные будут проверены, файл JSON, содержащий минимальный объем данных для отображения панели инструментов, будет отправлен обратно в браузер. AJAX в сочетании с JSON не только наделяет современные веб-страницы способностью быстро реагировать на действия пользователей, но и экономит пропускную способность, отправляя только необходимые данные для создания веб-страницы.