findface-tarantool-server

Сервис findface-tarantool-server обеспечивает взаимодействие между сервисом findface-sf-api и биометрической базой данных Tarantool следующим образом:

Совет

Подробнее см. официальную документацию Tarantool.

  • findface-tarantool-server получает от findface-sf-api данные для записи в базу данных (например, об обнаруженных лицах).
  • По запросу от findface-sf-api findface-tarantool-server выполняет поиск по базе данных и возвращает его результат.

Для увеличения скорости поиска на каждом сервере с базой данных Tarantool могут быть созданы многочисленные сегменты («шарды») findface-tarantool-server. Их параллельное функционирование приводит к значительному увеличению производительности (в 70-100 раз).

Полный список функций:

  • сохранение лиц в базу биометрических данных,
  • выполнение поиска по базе биометрических данных,
  • реализация прямых запросов в базу данных Tarantool (см. Прямые API-запросы к базе данных Tarantool).

Настройка компонента findface-tarantool-server выполняется через файл конфигурации /etc/tarantool/instances.enabled/<shard-*>.lua. В кластерной среде файл конфигурации настраивается отдельно для каждого шарда.

--
-- Please, read the tarantool cfg doc:
-- https://tarantool.org/doc/reference/configuration/index.html#box-cfg-params
--
box.cfg{
    --port to listen, direct tarantool access
    --Only need for admin operations
    --THIS IS NOT PORT YOU NEED FOR facenapi/sf-api
    listen = '127.0.0.1:32001',
    --Directory to store data
    vinyl_dir = '/opt/ntech/var/lib/tarantool/shard-001',
    work_dir = '/opt/ntech/var/lib/tarantool/shard-001',
    memtx_dir = '/opt/ntech/var/lib/tarantool/shard-001/snapshots',
    wal_dir = '/opt/ntech/var/lib/tarantool/shard-001/xlogs',
    --Maximum mem usage in bytes
    memtx_memory = 200 * 1024 * 1024,
    checkpoint_interval = 3600*4,
    checkpoint_count = 3,
    --uncomment only if you know what you are doing!!! and don't forget box.snapshot()
    -- wal_mode = 'none',
    --if true, tarantool tries to continue if there is an error while reading a snapshot/xlog files:  skips invalid records, reads as much data as possible and re-builds the file
    -- force_recovery = true,
}
pcall(function() box.schema.user.grant('guest', 'execute,read,write', 'universe') end)
dofile("/etc/ffsecurity/tnt_schema.lua")
-- host,port to bind for http server
FindFace = require("FindFace")
FindFace.start("127.0.0.1", 8101, {
    license_ntls_server="127.0.0.1:3133",
    meta_indexes=meta_indexes,
    meta_scheme = meta_scheme
})

Пользовательская настройка findface-tarantool-server выполняется с использованием следующих параметров:

Параметр Описание
memtx_memory Максимальный размер оперативной памяти в байтах, который может быть использован шардом Tarantool. Перед изменением данного параметра обратитесь к нашим экспертам за консультацией по адресу support@ntechlab.com.
force_recovery Включает/отключает автоматическое восстановление базы данных Tarantool. Если автоматическое восстановление данных включено (true), каждый раз при возникновении ошибки во время чтения файла .snap или .xlog, Tarantool попытается прочитать как можно больше информации и восстановить файл, игнорируя битые записи.
license_ntls_server IP-адрес и порт сервера лицензирования findface-ntls.
meta_scheme Структура базы данных для хранения биометрических параметров. Представляет собой набор полей, для каждого из которых указываются следующие параметры: id: id поля, name: название поля, должно совпадать с названием соответствующего параметра лица, field_type: тип данных, default: значение по умолчанию. Если значение по умолчанию для поля больше ‘1e14 – 1’, то его следует записывать в виде строки, т. е. “123123” вместо 123123.

Структура базы данных передается из файла /etc/ffsecurity/tnt_schema.lua в параметр meta_scheme.