LINUX.ORG.RU

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


0

2

Добрый вечер.
Речь идет о DKlab Realplexor
Кто-нибудь пользовался? Пример:
В скрипте (сервере) каждую 1 секунду проверяется наличие новых данных в БД. Если будет 100 клиентов — каждую секунду будет 100 запросов к БД или 1? Т.е. на каждого клиента отдельный процесс с проверкой новых записей или один процесс на всех?
Смутило это:

Поддержка сотен тысяч одновременных соединений из JavaScript: _однопоточная_ событийная модель

★★

По прочитанному за пару минут сложилось следующее впечатление: скрипт висит на сервере и принимает входящие соединения от клиентов. Клиент подписывается на канал, т.е. говорит давай мне твиты по установленному критерию (#yolo и прочее). Раз в секунду скрипт смотрит в базу или куда ещё и отсеивает новые твиты по понятно какому критерию. Потом просто распихивает их в нужные каналы.

Выглядит так: скрипт -> N*каналов -> N*K*пользователей. Стрелками показано «проталкивание» данных, а не «вытягивание».

Короче, 100 запросов не будет. Просто будет задержка <1с пока скрипт не доберётся до следующего чанка твитов.

anonymous
()

уфф, мне уж почудился тред «как работает телефон?», простите за оффтоп, ради бога.

darkenshvein ★★★★★
()
Ответ на: комментарий от anonymous

Да, мне тоже так кажется. Но вполне возможно, что принцип работы, как у Long Polling (в связке php+jquery), где просто на каждого клиента создается новый процесс (запрос к скрипту) и ожидаются данные, периодически обрываясь. В таком случае смысл данной штуки не особо понятен. На оф. форуме молчат и, по всей видимости, довольно давно. Протестировать пока возможности нет — пишут, что легко собирается на убунте 12.04, но таковой пока под рукой нет, а с другими версиями убунты на локалке и серваке геморрой. KRoN73, не пользовался, случайно?

emissar ★★
() автор топика
Ответ на: комментарий от emissar

не пользовался, случайно?

Не-а. Я тут старомоден и ленив, для интерактивности использую обычный AJAX и периодические опросы. Вебсокетам или лонг пулингу как-то не доверяю ещё :) А вопрос производительности решаю подсовыванием для AJAX статических JS-файлов.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А вопрос производительности решаю подсовыванием для AJAX статических JS-файлов.

Это как? Не понял принципа.

emissar ★★
() автор топика
Ответ на: комментарий от emissar

Это как? Не понял принципа

Отдаваемый для AJAX файл (не обязательно JS, м.б. JSON, например) не генерируется на лету при каждом запросе, а лежит статически в кеше сервера. Если на сервере что-то меняется, то соответствующие файлы переписываются. Если клиент новый, AJAX требуется персональный и статического кеш-файла ещё нет, то тогда происходит реальный запрос и генерация статического файла. С одновременной его регистрацией в БД, чтобы было понятно, что тереть при обновлениях.

Т.е. фактически вся нагрузка ложится только на отдачу статики тем же nginx, а он отдать может много :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Если клиент новый, AJAX требуется персональный

Это как? Типа для каждого клиента свои данные?

Ещё, кстати, в html5 появился app cache, вообще это для оффлайн-режима в одностраничных веб-приложениях, но позволяет хранить файлы в кеше браузера теоретически бесконечно долго. Хотя IE 9 не умеет.

anonymous
()

Не знаю как он там работает, да и не нужно это. Я обычно делаю оповещение пользователей о событиях на сервере с помощью EventSource, а на сервере отдельный IO Loop с брокером сообщений типа beanstalkd и все. Полный контроль над происходящим + простой и лаконичный код.

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

northicewind
()

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

emissar ★★
() автор топика
Последнее исправление: emissar (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.