А что у нас должно быть на вебсервере? Ну понятно, что html-файлы пачками там уже лет 10 как не лежат, да и юзеры сами должны добавлять контент, так что же там должно быть? В голову приходят 2 варианта:
1. Так как сервер — это связующее звено между всеми (ну не может браузер послать другому браузеру сообщение, пока еще не может), то можно трактовать его как эдакий большой прокси-сервер. Принял сообщение от одного юзера, закешировал, отдал другому. Если есть права — отдал всем. Какой формат сообщения — не важно, главное что можно получить список сообщений/само сообщение, а будет это текст/песня/картинка — не важно. Пусть будет аналогия с почтовым сервером — можно просмотреть список писем в ящике, можно получить какое-то письмо, целиком или частично. Или даже удалить. Выходит, достаточно создать директории, куда юзеры будут класть контент, запаролить некоторые "разделы" сайта на запись, так некий "универсальный сайт" сразу будет готов? Выходит так. Добавить шаблончиков, дабы листинги директорий небыли похожи на листинги апача, ну и все, можно отдавать заказчику. Прошу заметить, что серверная логика тут участвует на уровне "пустить/запретить", ведь если мы что-то заливаем на сервер — значит это в любом случае будет кому-то потом доступно, правда? Только отрежем тех, кто не имеет права публикации (не всем же срать на глагне), да и тех, кто пытается отосрать некорректные данные (ну там запостить трах-репорт в раздел кулинарии). Поэтому получаем эдакий прокси-сервер, пусть и с шаблонизатором/правами.
2. Вторая идея — это концепция "потоков", скажем чат — это поток сообщений. Или радиосервер — это сервер, выдающий поток звуковых семплов, чем-то пожатых. Видеосервер — аналогично, только с картинками. Новости — это тоже чятик, только с красивым скином, форматированием и возможностью версионирования. Очень похоже на директории из первого варианта, правда? Как и в директорию, в поток можно что-то активно складывать, что потом доступно всем. Однако есть нюанс — а что если я хочу получить сразу 20 потоков данных? Например, открыть 20 разделов форума? Или, например, следить сразу за 100 автомобилей, наблюдая за GPS-координатами? А если я хочу слышать сразу 20 голосовых потоков? С форумами и автомобилями — это выборка некоторых полей из объекта (ну или какой-то пиздатый механизм обновления объектов), а с голосом нужна полная распаковка/процессинг/микширование/упаковка звука. Выходит, нужен не только механизм, дабы сказать "дай мне вооооон тот кусок данных", но и изменять эти самые данные на лету. Но может не всем нужны только координаты автомобилей, может быть и оригинальные данные нужны? Таким образом приходим к выводу, что нужны своего рода каналы, на которые можно подписываться и получать только нужные нам уведомления/данные. Скажем, как это сделано в AMQP — тут тебе и топики, и мультиплексы, все в одном флаконе. Хочешь получать события 20 форумов — просто подпишись на них и получай отобранное. Аналогично с голосом — подпишись на канал "все сразу" — будет уже смиксованное.
Что же мне не дает покоя? А то, что AMQP позиционировался как почтовый протокол, т.е. он ближе к первому варианту.
И вот тут я висну, не знаю чо делать, кому продать душу, да и вообще, нахуй я все это пишу.
saransk
06.08.2011 07:54 QIP
Recommended by:
@hongweibing
Do you really want to delete ?