Skip to content

Aleksandr-ru/ddproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

npm start

или

node server/index.js

(c)2021 aleksandr.ru