Статьи

Истечение срока действия обратных вызовов для сервера Couchbase

Эта статья была первоначально написана Тоддом Гринштейном

TTL и уведомление об истечении срока действия

Couchbase включает TTL (Time To Live) как часть полей метаданных для каждого документа. Все клиентские SDK включают в себя поддержку установки / запроса / касания этого значения. Значение задается как «количество секунд, в течение которых документ должен жить» для документов, срок действия которых истекает через 30 дней или менее. Для значений длиннее 30 дней должно быть передано значение времени эпохи Unix. TTL часто используются в высокопроизводительных хранилищах сеансов и приложениях для кэширования. То, что происходит с сеансом по истечении срока действия документа, может быть проблематичным и обременительным для управления на уровне приложений. Что если бы высокая производительность и гибкость Couchbase Server были использованы для обеспечения обратных вызовов для истечения срока действия документа? Представляем «Expiry-Notifier» от Couchbase Labs. Приложение, исходный код,и инструкции могут быть загружены срепо couchbaselabs на github. **

Couchbase Labs об истечении срока действия уведомителя

Приложение запускает небольшой экземпляр приложения node.js и express. Он настроен и доступен через REST API. Почему Node.js? Node.js — это хорошо поддерживаемая платформа приложений для Couchbase, она невероятно легкая, эффективно управляет своим пространством и хорошо подходит для приложений RESTful. Уведомление об истечении срока действия может быть вызвано напрямую или может быть настроено для автоматического выполнения обратных вызовов с истечением срока действия в течение заданного интервала времени. Функция обратного вызова expiry возвращает метаданные и время истечения (или секунды до истечения срока) для документов, срок действия которых истекает в течение указанного временного окна.

Например, чтобы получить обратный вызов истечения срока действия от приложения, которое будет напрямую опрашивать службу, документ определяется в Couchbase с 300-секундным сроком действия как:

Key (meta.id): triumph

{
"value": "1966 Triumph Spitfire Mark II 4 speed with overdrive and twin Weber carburetors."
}

Если работает expiry-notifier, для относительного времени установлено значение true (подробнее об этом через секунду), и через 10 секунд конечная точка REST вызывается для опроса обратных вызовов с истечением срока действия:

http://servername:3000/poll/300

Будет возвращен объект JSON:

{triumph:290}

Как работает истечение срока действия уведомителя

Expiry-notifier может быть запущен с любого сервера, на котором установлен node.js. После установки уведомления об истечении срока действия (инструкции можно найти в репозитории couchbaselabs на github ), необходимо запустить приложение. Из корневого каталога, где установлено приложение, запустите

«npm start»

По умолчанию приложение будет работать с использованием порта 3000. Чтобы проверить, запущено ли приложение, вызовите следующую команду REST:

«HTTP: // <сервер>: 3000 / статус»

Чтобы настроить службу для взаимодействия с кластером couchbase, вызовите следующую команду REST:

«HTTP: // <сервер>: 3000 / Настройка / сервер / 192.168.60.101 / 8091 / пиво-образец»

Приведенная выше команда REST определяется как: / setup / server /: server /: port /: bucket [RETURNS: {JSON OBJECT} с изменением статуса]. Вызов этой команды REST выполняет следующее:

  • Создает интеллектуальный клиент для связи с кластером Couchbase
  • Устанавливает облегченный индекс в couchbase, который содержит метаданные только для времени истечения.

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

«http: // <сервер>: 3000 / setup / конечная точка / <сервер приложений> / 3000 / receive_callback»

Приведенная выше команда REST определяется как: / setup / endpoint /: имя хоста /: порт /: путь / <: https> [ВОЗВРАТЫ: {JSON OBJECT} с изменением состояния] Примечание: флаг «https» используется только в том случае, если expiry- уведомитель для отправки обратных вызовов по протоколу https. Обратитесь к документации для получения более конкретной информации.

Чтобы начать отправку обратных вызовов в определенную выше конечную точку для документов, срок действия которых истекает в течение следующих 30 секунд, а затем каждые 30 секунд используйте следующую команду REST:

«HTTP: // <сервер>: 3000 / Настройка / опрос / 30 / цикл»

Приведенная выше команда REST определяется как: / setup / poll /: interval /: loop [RETURNS: {JSON OBJECT} с изменением статуса] Эта команда отправит объект JSON с мета-идентификаторами и их истечением во время эпохи UNIX (количество секунд после 1 января 1970 года срок действия документа истек). Если предпочтительным является количество секунд до истечения срока действия документа, используйте команду ниже.

Чтобы вернуть количество секунд до истечения срока действия документа вместо времени эпохи UNIX, используйте следующую команду:

«HTTP: // <сервер>: 3000 / установка / родственник / правда»

Приведенная выше команда REST определяется как: / setup /lative /: bool [RETURNS: {JSON OBJECT} с изменением статуса]

** Отказ от ответственности: Couchbase Labs предоставляет экспериментальный код только для целей исследований и разработок. Код и приложения от Couchbase Labs не поддерживаются никаким соглашением о поддержке Couchbase и предоставляются без каких-либо гарантий.