Технические возможности

Производительность и масштабируемость

  • Базовые возможности
  • На виртуальной машине с 4 CPU и 8Гб оперативной памяти производительность составляет около 200 карточек документов в секунду.
    Если этого недостаточно, можно увеличить за счет
    — вертикального:
    установка на более мощный сервер.
    — горизонтального:
    добавляем недорогие серверы и объединяем их в кластер.

    На наш взгляд, горизональное масштабирование более предпочтительно, так как добавляет отказоустойчивости системы в целом (перераспределение нагрузки) и намного более экономично.

  • Сервера приложений
  • На «легкой» виртуальной машине устанавливается кэширующий прокси-сервер nginx, который отдает статические файлы (стили и JavaScript) и файлы, загруженные пользователем, самостоятельно.
    Динамический контент (html-код и ajax-запросы) он переадресует серверам приложений, равномерно распределяя нагрузку.
    Кэширующим сервером является memcached, обеспечивающий единый кэш для всех серверов uWSGI и их серверных процессов.

  • Серверы базы данных
  • СУБД является  частью системы, наиболее сложной для масштабирования.
    — Синхронный master — slave
    Чтение делается в slave-сервера, а запись —  в master.
    Настраивается репликация данных в синхронном режиме (долгая запись, быстрое чтение).
    — Асинхронный master — slave
    Часть системы, отвечающая за оперативную обработку транзакций, работает только с master-сервером, а отчетность и не критичные к запаздыванию данных части читают с slave, а пишут в master-сервер.