Echo StreamServer

Echo StreamServer

В свете общего интереса ко различным SAAS-сервисам и способам их построения хотелось бы упомянуть об Echo StreamServer.

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

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

Закажите продвижение сайта и получите $100 контекста и пакет веб-аналитики в подарок.

Краткий обзор API

API содержат четыре группы методов:

  • Items API. Методы управления пакетами данных. Их можно добавлять (метод submit), получать выборку (search), получать количество в выборке (count), формировать составные запросы (mux).
  • Feeds API. Методы управления потоками данных в формате Activity Stream. Их можно регистрировать (register), получать список зарегистрированных (list), убирать из списка зарегистрированных (unregister).
  • Users API. Работа с идентификаторами пользователей. Можно получать (get) информацию о пользователе, обновлять (update) информацию и идентифицировать авторизованного пользователя (whoami). Добавляется пользователь в момент первой авторизации в системе.
  • Key-Value Store API. Работа с хранилищем типа ключ-значение. Данные можно вставлять по ключу (put), получать (get) и удалять (delete).

Примеры применения

В каких же еще случаях (кроме виджетов лайков и комментариев) можно использовать Echo StreamServer? Рассмотрим несколько сценарией.

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

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

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

Или, например, вы решили создать сервис — единую базу данных отзывов по произвольным элементам (товарам, персонам, новостям), которую сможет использовать любой сайт. Вы создаете два виджета — один для ввода отзыва, другой — для отображения списка отзывов.

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

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

Цикл работы типового приложения

Цикл работы типового приложения, построенного на платформе Echo StreamServer, можно описать, как несколько процессов: получение данных, обработка, выборка и раздача.

Получение данных

Добавить данные можно методом submit. Вызывается он путем POST-запроса по адресу http://api.echoenabled.com/v1/submit с параметрами content и mode.

Content — это сами данные в открытом формате Activity Stream XML. Например:

<activity:object>
  <activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
  <id>http://somedomain.com/id/123123123</id>
  <content type="html">Simple content</content>
  <published>2010-05-31T10:38:56</published>
</activity:object>

Mode может быть или update или replace, в зависимости от того, необходимо ли частично обновить элемент или заменить его новым полностью.

Это не единственный способ, как можно добавить данные. В том числе можно использовать готовые приложения из библиотеки Echo StreamServer, например «Submit Form».

Обработка

Платформа поддерживает расширяемый набор фильтров, с помощью которых можно реализовать обработку спама, модерирование, репутационные рейтинги и т.д. Подобные фильтры могут быть добавлены в систему как пользовательские приложения (add-on).

Примером такого приложения может послужить Bad Word Filter. Оно выполняется на стороне StreamServer`а, проверяет поступившие пакеты данных на содержание запрещенных слов и присваивает пакету данных свойство spam.badwords в случае их обнаружения. Управление запрещенными словами в нем происходит через Key-Value Store API по ключу bad-words-subst-pattern.

Выборка

Данные можно извлечь с помощью специально сформированных запросов на языке Echo Query Language. Язык запросов поддерживает выборку данных по разным критериям:

  • типам (статья, комментарий, заметка, статус и т.д.);
  • источнику поступления данных (можно выбрать данные поступившие из твиттера, например);
  • пользователю, которому принадлежат данные;
  • родительскому элементу;
  • маркерам и тегам.

Это не полный список критериев. Критерии могут комбинироваться.

Раздача

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

Сама платформа Echo StreamServer может обеспечивать обработку большого количества запросов, может автоматически «подцеплять» дочерние сущности в выборку и позволяет получать «живую» ленту путем регулярного опроса изменений в потоке.

Возможности заработать на своем приложении

За использование API Echo StreamServer платит владелец сервиса или веб-сайта. Тарифы подразумевают покупку пакета, включающего определенное количество обращений к API в месяц. Причем тарифицируются не все API, а только те, которые связаны с поиском данных (search). А разработчик, добавивший свой компонент в библиотеку Echo StreamServer, может на нем заработать процент от денег, потраченных клиентом на запросы через этот компонент.

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 12

Дмитрий
Очень интересная статья. Нужно будет подумать))
Дмитрий
Спасибо, действительно интересная статья.
Игорь
Автору благодарность!! Было очень интересно почитать и что-то новое для себя узнать!
Алена Кондратьева
Отличная и верная информация! Применила у себя! Спасибо автору, отличный сайт!
Андрей
Отличный сайт! Спасибо автору, нашел много полезной информации для себя.
Санат
Хорошая статья, интересный сайт, надо заходить почаще
Леся
Интересно! Но столько новых терминов, караул просто... И как это все выучить?
EvgeniyPetroff
Хорошая статья. Столько терминов, как Вы во всем этом разбираетесь?
Вера
Интересно, но очень сложно!
Илья
Сервис по типу pubnub.com? или более мощный? где можно подробнее посмотреть примеры внедрения? на их сайте так и непонял что и куда - раширения, много букв - а как с ними начать работать? если бесплатные тарифы? где Hello World? ))))
#
Илья
Евгений
Довольно интересно. Большое спасибо за информацию. Загрузили меня сегодня терминами. Но все таки спасибо.

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler