项目作者: Aleksandr-ru

项目描述 :
Dadata caching proxy
高级语言: JavaScript
项目地址: git://github.com/Aleksandr-ru/ddproxy.git
创建时间: 2019-03-04T11:07:07Z
项目社区:https://github.com/Aleksandr-ru/ddproxy

开源协议:

下载


Кеширующий прокси для дадаты

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

На текущем этапе развития сервер кеширует в Redis результат любого удачного запроса.
Информация об организации по ИНН кешируется с увеличенным сроком жизни.

Для запроса информации о юр.лице по ИНН (/suggestions/api/4_1/rs/findById/party)
создается дополнительный ключ вида inn:100500 со ссылкой на результат запроса.

Можно ограничить максимальное количество разрешенных запросов к дадате в сутки.
Таким образом можно балансировать ресурс дадаты между несколькими потребителями.
Для этого нужно запустить несколько копий сервера с единым кешем и разными
идентификаторами приложения, такой запуск не поддерживается через ddproxy.sh.
Ограничение количества запросов не распространяется на те, что попали в кеш.
В суточном счетчике запросов учитываются только те, что завершились успешно,
сутки считаются по локальной таймзоне сервера, где запущен прокси.

Конфигурация (.env)

Сервер читает свою конфигурацию при запуске из файла .env в корневой папке приложения.
Перезагрузка конфигурации без перезапуска сервера не предусмотрена.

  1. APP_ID=default # идентификатор приложения для установки ограничений
  2. APP_LIMIT=0 # максимальное количество запросов к дадате в сутки (0 - без ограничений)
  3. SERVER_PORT=3000 # порт, который слушает сервр
  4. DADATA_BASEURL='https://suggestions.dadata.ru' # базовый урл куда будут проксироваться запросы
  5. DADATA_TOKEN=ComeAndGetYourOwnToken # ваш токен для атворизации в дадата
  6. REDIS_OPTIONS_URL='redis://127.0.0.1:6379' # урл подключения к redis
  7. REDIS_EXPIRE=60 # время жизни кеша запросов по-умолчанию (сек.)
  8. REDIS_EXPIRE_INN=2592000 # вермя жизни кеша запросов по ИНН (сек.)
  9. REDIS_EXPIRE_EMPTY=86400 # время жизни кеша пустых ответов на ИНН (для недавно зарегистрированных юр.лиц, сек.)

Пример конфигурации см. в файле .env.example

Поддержка кластера

В урл подключения к redis можно передать наобор узлов кластера в виде host:port
разделитель - запятая , без пробелов. Например, REDIS_OPTIONS_URL='192.168.1.1:6379,192.168.1.2:6379'.

Запуск и остановка

Сервер содержит скрипт для управления в корневой папке приложения

  1. ddproxy.sh { start | stop | restart | status }

Внимание! при запуске от root или обычного пользователя создает PID и лог файлы в разных местах,
подробнее см. в ddproxy.sh

Так же сервер может быть запущен командами

  1. npm start

или

  1. node server/index.js

(c)2021 aleksandr.ru