воскресенье, 25 июля 2010 г.

Используем Nginx как “long polling” (Comet) сервер

comet


Принцип “Long Polling” (или “Comet“) позволяет сделать возможным установление постоянного соединения клиента с Web приложением и также периодичной отправки данных клиенту в рамках этого соединения (без необходимости клиента постоянно делать HTTP запросы для проверки новых данных). Другими словами, эта модель позволяет реализовать постоянные HTTP соединения для получения данных порциями. Наиболее популярное применение — чаты, твиттеры и другие live-updated потоки — клиент постоянно “слушает” сервер на предмет появления новых сообщений, и как только новые сообщения появляются — они мгновенно доставляются ему.


Сам принцип не несет в себе инноваций в HTTP протоколе, т.к. этот подход реализуем обычными средствами. Проблема заключается в том, что стандартное решение — установка постоянного соединения с обычным Web сервером (а значит и с обслуживающей платформой, например php-бекендом) — крайне ресурсоемкое и не применимо на практике. Другой подход — постоянно опрашивать приложение на предмет появления новых данных является еще более ресурсоемким.


Решением этой проблеммы стали т.н. HTTP-PUSH (или comet) сервера, позволяющие облуживать огромное количество постоянных соединений эффективно расходуя ресурсы. Как они устроены и как применяются на практике?


Принцип работы Comet-сервера


Необходимо отметить, что Comet сервер решает задачу отправки клиенту определенных данных порциями. Comet сервера реализуют т.н. HTTP Push Relay протокол (например, Basic HTTP Push Relay Protocol). Принцип работы такого протокола заключается в следующем:



  • На Web сервере создается т.н. “канал” с уникальным ключем. Это делается на стороне приложения путем посылки запроса к Comet-серверу

  • Клиент устанавливает обычное HTTP соединение с Comet-сервером, передавая в параметры ключ канала, из которого он будет получать данные. Сервер удерживает такое соединение, пока не отправит очередную порцию данных

  • Основное приложение, по определенному событию (например, кто-то написал сообщение клиенту), шлет в канал Comet сервера с нужным ключем это сообщение

  • Как только в канале появляется сообщение, Comet сервер отправляет его соответствующему клиенту и закрывает HTTP соединение (иногда соединения не закрываются, а продолжают быть активными)


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


Nginx и модуль HTTP Push


Модуль nginx_http_push_module позволяет превратить Nginx в Comet сервер, реализуя протокол Basic HTTP Push Relay Protocol. Преимущества этого модуля и протокола — в его простоте по сравнению с альтернативными решениями (например, протоколом Bayeux и сервером CometD).


Установка


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



wget http://pushmodule.slact.net/downloads/nginx_http_push_module-0.692.tar.gz
tar -xvf nginx_http_push_module-0.692.tar.gz
...
cd /where/nginx/sources/are
./configure \
--add-module=/path/to/nginx/modules/sources/nginx_http_push_module-0.692/
make; make install

Конфигурация


Для базовой конфигурации нам необходимо объявить две рабочих точки в Nginx’e: точка публикации сообщений (приватная — доступна только для самого приложения) и точка раздачи сообщений (публичная — к которой будут подключаться клиенты):



location /publish {
# Название переменной с идентификатором канала
# в нашем примере "cid", т.е. запрос будет таким:
# http://example.com/publish?cid=s42378fwe
set $push_channel_id $arg_cid;
push_publisher;

# Отключаем хранение очереди (сообщение удаляется после доставки)
push_store_messages off;
}

location /listen {
push_subscriber;

# Обслуживать только первого "слушателя"
# Остальным отправляем 403
push_subscriber_concurrency first;

# Идентификатор канала
set $push_channel_id $arg_cid;

# Тип ответа
default_type text/plain;
}

После этого при отправке сообщения нужно будет посылать его в соотв. канал, делая POST запрос на “/publish”. Клиент же отправляет GET запрос на “/listen” и ждет ответа. Когда приходит ответ, клиент делает повторный запрос на “/listen” и т.д.


Все параметры конфигурации с подробным описанием смотрите на официальном сайте.


Пример


В качестве примера ниже приведен код на PHP, который используется для отправки сообщения в канал:




# Определяем ID канала
$channel_id = 12345;

# Сообщение
$message = 'Привет тебе!';

# Отправляем сообщение в канал
$c = curl_init( 'http://localhost/publish?cid=' . $channel_id );
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, json_encode($message));
$r = curl_exec($c);

Для получения сообщения код на Javascript будет выглядеть где-то так (на основе Jquery):



var channelId = 12345;
function check_messages() {
$.get('/listen?cid=' + channelId, {}, function(r) {
// Считаем, что у нас есть div c id=messages,
// куда мы дописываем сообщения
$('#messages').append(r);
setTimeout(check_messages, 500);
}, 'json');
}

check_messages();

В каких случаях Вам приходилось пользоваться comet-серверами?



Google Bookmarks Digg I.ua Ru-marks Ruspace Zakladok.net Reddit delicious Technorati Yahoo My Web News2.ru БобрДобр.ru Memori.ru rucity.com



Related posts:

  1. Настройка nginx
  2. Настройка nginx для отдачи файлов
  3. Ресайзинг картинок в nginx

Эх… так хочется Flex Hero

Хе, некоторые счастливцы оказывается уже могут скачать Flex Hero, а вот мы – смертные – пока не можем.


Зато можем посмотреть сохраненную Гуглом копию страницы для загрузки Flex Hero. Даже не пытайтесь кликать там по кнопке Download – всё равно вам ничего не достанется. :)


суббота, 24 июля 2010 г.

Зеркала на японском космическом корабле позволят ему выдерживать высокие температуры


Новая японская миссия на орбиту будет включать в себя космический зонд, защищенный зеркалами, которые смогут отразить 450С (842F) тепла от планеты.



Японское агентство аэрокосмических исследований было вдохновлено двумя полетами в космос, проведенными недавно (Hayabusa и Ikaros), и надеется, что зеркала на новом космическом корабле позволят ему выдерживать высокие температуры Меркурия, который является ближайшей к Солнцу планетой, сообщает infuture.ru.


Команду JAXA возглавляет Сэйити Сакамото, который ожидает, что путем отражения тепла от Солнца, зеркала смогут сохранить свою температуру примерно в 160C (320F).


Внутри аппарата температура будет около 60C (140F) — именно тут будут храниться инструменты для наблюдений.


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


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


Исследователи JAXA надеются запустить свой зонд в июне 2014 года.


McAfee Risk Management - для управления рисками


McAfee представила новое комплексное решение по управлению рисками McAfee Risk Management для информационной безопасности.



Новое комплексное решение McAfee Risk Management включает в себя такие продукты, как McAfee Risk Advisor 2.5, McAfee Vulnerability Manager 7.0 и McAfee Vulnerability Manager for Databases. В отличие от отдельных существующих продуктов, которые требуют от ИТ специалистов только кореллировать информацию, McAfee Risk Management автоматически сводит в режиме реального времени всю аналитику рисков в единое информационное хранилище. Это дает возможность предприятиям анализировать все возникающие риски, связанные с информационной безопасностью, и применять необходимые инструменты для оптимизации мер безопасности в разрезе базы данных, веб-приложений, состояния систем и сети. Подробнее о компонентах: McAfee Risk Advisor 2.5 является контрольной панелью, которая предоставляет информацию об угрозах, уязвимостях и контрмерах. В новой версии McAfee Risk Advisor 2.5 содержатся механизмы для ранжирования рисков и расширенные возможности по оптимизации исправлений. McAfee Vulnerability Manager 7.0 обеспечивает комплексное изучение угроз и корреляцию данных, определяя, как зарождающиеся сетевые угрозы и уязвимости влияют на структуру рисков. В версии 7.0 добавлены функции глубокого сканирования веб-приложений. С помощью решения McAfee Vulnerability Manager 7.0 организации могут выполнять самое точное исследование веб-приложений в рамках общей работы по оценке имеющихся уязвимостей. McAfee Vulnerability Manager for Databases автоматически находит работающие базы данных в сети предприятия, определяет наличие или отсутствие актуальных исправлений, а также проводит проверку на наличие слабых паролей, стандартных учетных записей и других распространенных уязвимостей.


Благодаря интеграции McAfee Risk Management с единой платформой управления McAfee ePolicy Orchestrator осуществляется защита и оптимизация соответствий стратегии управления рисками, что дает возможность организации любого размера оптимизировать структуру информационной безопасности.

Компанию McAfee продолжают награждать за разработку лучших решений для защиты информационной безопасности. Так недавно McAfee наградили за Total Protection for compliance – комплексное решение по управлению соответствиями требованиям, которое участвовало в тестировании, организованном компанией CS Magazine`s Risk Management Group Test.


СDMAUA совершенствует действующее покрытие и емкость сети


Оператор СDMA-связи и 3G-интернета СDMAUA расширил емкость и покрытие сети по технологии СDMA 2000 1x в ряде регионов.



В июле технические специалисты СDMAUA провели работы по расширению и оптимизации сети, в результате чего было усовершенствовано покрытие и увеличена емкость сети на территории Черниговской области (пгт. Козелец, с. Прогресс, с. Чемер, Савинка), Киевской области (г. Бровары и пригороды), а также в пригородах Севастополя (с. Широкое, Подгорное, Родниковое). В результате проведенных работ удалось существенно повысить качество приема и скоростные показатели доступа в интернет по технологии СDMA 2000 1x.


На сегодняшний день СDMAUA предоставляет свои услуги во всех регионах Украины. Современная сеть, построенная на базе прогрессивной технологии СDMA, охватывает все областные центры и прилегающие районы, а также множество городов и населенных пунктов. Дальнейшее расширение покрытия позволит оценить преимущества СDMA-связи и беспроводного 3G-интернета жителям небольших поселков, райцентров и сел, где доступ населения к современным коммуникациям все еще сильно ограничен. Одно из приоритетных направление в развитии сети – последовательный запуск во всех регионах технологии EVDO, которая позволяет предоставлять услуги беспроводного доступа в интернет на скоростях третьего поколения (до 3,1 Мбит/с).


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


Intel выплачивает дивиденды


Совет директоров корпорации Intel объявил о планируемой выплате ежеквартальных дивидендов в размере 15,75 цента на обычную непривилегированную акцию.



Они будут выплачиваться с 1 сентября 2010 г. владельцам акций по состоянию на 7 августа 2010 г.


пятница, 23 июля 2010 г.

МТС улучшает связь в Крыму


Оператор мобильной связи «МТС Украина» завершил первый этап программы по оптимизации сети GSM в различных регионах Украины.



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


В южной части Украины (Днепровское и Южное ТУ) проводятся работы по переводу нагрузки с контроллеров базовых станций старого типа на контроллеры нового типа. Также проводится оптимизация и перераспределение количества приемопередатчиков и трафиковой нагрузки на подсистеме базовых станций. Кроме того, в Днепровском и Южном ТУ запущен процесс смены программного обеспечения на подсистеме базовых станций, что позволит достичь таких же показателей работы сети, как и в Крымском ТУ.


Полное завершение работ по оптимизации сети GSM планируется в ноябре 2010 года. Ожидаемые результаты: снижение уровня обрывов на 16-21%, повышение уровня успешности установления соединений в среднем на 3%, повышение уровня успешности хендоверов на 25-30%.