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.available/<shard-*>.lua. В кластерной среде файл конфигурации настраивается отдельно для каждого шарда.

--
-- Please, read the tarantool documentation at https://www.tarantool.io/en/doc/1.10/
--

box.cfg{
    -- THIS IS NOT HTTP API PORT, it's for admin operations
    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/findface-security/tnt_schema.lua")


-- host:port to bind, HTTP API
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 выполняется с использованием следующих параметров:

Параметр

Описание

force_recovery

Включает/отключает автоматическое восстановление базы данных Tarantool. Если автоматическое восстановление данных включено (true), каждый раз при возникновении ошибки во время чтения файла .snap или .xlog, Tarantool попытается прочитать как можно больше информации и восстановить файл, игнорируя битые записи.

license_ntls_server

IP-адрес и порт сервера лицензирования findface-ntls.

memtx_memory

Максимальный размер оперативной памяти в байтах, который может быть использован шардом Tarantool. Перед изменением данного параметра обратитесь к нашим экспертам за консультацией по адресу support@ntechlab.com.

meta_scheme

Структура базы данных для хранения биометрических параметров. Представляет собой набор полей, для каждого из которых указываются следующие параметры: id: id поля, name: название поля, должно совпадать с названием соответствующего параметра лица, field_type: тип данных, default: значение по умолчанию. Если значение по умолчанию для поля больше ‘1e14 – 1’, то его следует записывать в виде строки, т. е. “123123” вместо 123123.

Структура базы данных передается из файла /etc/findface-security/tnt_schema.lua в параметр meta_scheme. Подробнее см. Изменение структуры биометрической базы данных.