Несколько подробностей о системе индексации в Evernote

в 10:50, , рубрики: evernote, Блог компании Evernote Corporation, индексация, поисковые системы, распознавание, распознавание изображений, метки: , , , ,

Предыдущая статья о распознавании текста в изображениях в сервисе Evernote была посвящена в основном вопросам функциональности — что это такое, как работает и что дает платформе Evernote в целом. На этот раз мы поговорим о технической стороне вопроса.

Аппаратное обеспечение

Распознавание текста в изображениях Evernote значительно загружает вычислительный кластер, поэтому производительность и эффективность играют главную роль при оценке оборудования. После испытания нескольких различных платформ мы остановились на iX1204-563UB от iX Systems. По сути это Supermicro X8DTU на шасси 815TQ-563UB. Каждая из 37 систем распознавания в кластере состоит из следующего железа:

  • CPU: два Intel Xeon CPU L5630 @ 2,13 МГц (расчетная рассеиваемая мощность — 40 ватт)
  • Материнская плата: Supermicro X8DTU
  • Системный блок: Supermicro 815TQ-563UB
  • Блок питания: 560 ватт (имеет рейтинг эффективности 80Plus Gold)
  • Хранилище данных: 5,25-дюймовый жесткий диск с пониженным энергопотреблением
  • RAM: 12 Гб PC3-8500 (1066 МГц)


CPU, RAM и прочие составляющие были выбраны по принципу компромисса между пропускной способностью и эффективностью. Ранее мы оценивали некоторые навороченные системы 2U Twin², но обнаружили, что они менее надежны при работе под постоянной большой нагрузкой, с которой им бы пришлось иметь дело. Традиционные blade-сервера также рассматривались, но в итоге оказалось, что их слишком трудно воткнуть в уже существующую инфраструктуру — особенно учитывая типичную для этих серверов 100% нагрузку.

Операционная система

Лежащая в основе операционная система представляет собой сборку Debian “Squeeze” (AMD64) из которой выкинуто все лишнее. Выбор пал на Debian из-за стабильности и удобства апгрейда. ОС осталась практически первозданной за исключением нескольких моментов:

  • Модифицированное ядро 3.0.4 было настроено под наши требования к повышенной пропускной способности, а cflags были подстроены под используемый у нас конкретный тип процессора.
  • Мы отключили файловую систему XFS с ее относительно большим буферным пространством и такими штуками как ‘barriers’ и ‘atime’.
  • Набор сетевых компонентов был настроен под более стабильную работу с множеством параллельных файловых транзакций.
  • Параметр ‘Swappiness’ ядра установлен на ноль (вместо 60 по умолчанию).
  • На уровне ОС включен сетевой протокол 802.1Q Trunk.

Идея состояла в том, чтобы по возможности свести к минимуму число узких мест и позволить набору средств распознавания изображений спокойно заниматься своим делом. Неожиданно большое влияние оказала настройка ядра, которая привела к росту производительности на 7-30% в зависимости от различных условий. Что касается XFS, то это дало нам возможность минимизировать конфликты ввода-вывода на однодисковом томе за счет немного большего количества оперативной памяти, а также возможности переназначить файловую систему на лету.

Программное обеспечение

Набор средств для распознавания изображений Evernote включает разработанное внутри компании ПО для работы с очередями на распознавание и собственно обработки изображений, а также набор механизмов распознавания, ориентированных на разные типы текста. Среди них есть как наши собственные разработки, так и лучшая в своем классе сторонняя технология от I.R.I.S. Наше собственное ПО состоит из AMP (Asynchronous Media Processor, асинхронный обработчик медиа) и ENRS (Evernote Recognition Service, служба распознавания Evernote). Подробно об этом софтверном наборе мы уже писали в предыдущей статье, поэтому ограничимся кратким описанием:

  • ENRS с помощью своих дочерних процессов AIR/ANR является механизмом, отвечающим за фактическое распознавание изображения.
  • AMP играет роль посредника между сервисным кластером Evernote и ENRS, принимая необработанные изображения и передавая их ENRS.

Нагрузка от взаимодействия серверов AMP смягчается наличием собственного трансляционного домена с принудительной изоляцией через упомянутый выше 802.1Q tagged VLAN. Это позволяет серверам распознавания сообщать друг другу, с каким шардом они уже работают, и избегать дублирования, за счет чего нагрузка на основной сервис Evernote значительно снижается.

Надеемся, что наш рассказ сделал понятнее для заинтересованных читателей одну из наиболее необычных составляющих сервиса Evernote. Тема такова, что довольно сложно рассказать об этой теме подробно, но в то же время не скатываясь во второстепенные детали.

Автор: Roberto

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js