🗺️Техническая архитектура

Содержание

Аббревиатуры, сокращения и термины

  • API - Application Programming Interface - интерфейс программирования приложений

  • AMQP - Advanced Message Queuing Protocol - протокол брокера сообщений

  • DB - Database - база данных

  • Kubernetes - Платформа для оркестрации контейнеров

  • Docker - Платформа для контейнеризации приложений

  • RabbitMQ - Сервер сообщений, использующий AMQP

  • Microservices - Микросервисы. Это подход к разработке приложений как набора независимых, мелких, модульных сервисов, которые могут быть развернуты независимо друг от друга.

  • ReactJS - JavaScript-библиотека для создания пользовательских интерфейсов. Позволяет разработчикам создавать большие веб-приложения, которые используют данные, которые могут меняться без перезагрузки страницы.

  • Node.js - Среда выполнения JavaScript на сервере. Это платформа, созданная на движке JavaScript V8 Chrome, которая позволяет разрабатывать быстрые и масштабируемые сетевые приложения.

  • FAISS - Библиотека для эффективного поиска ближайших соседей и кластеризации высокомерных данных.

  • HTTPS - HyperText Transfer Protocol Secure - расширение HTTP, поддерживающее шифрование данных с помощью SSL/TLS.

  • REST - Representational State Transfer. Это архитектурный стиль взаимодействия компонентов компьютерной системы.

  • NGINX - Высокопроизводительный HTTP-сервер и обратный прокси-сервер.

  • SSL/TLS - Secure Sockets Layer / Transport Layer Security. Это криптографические протоколы для обеспечения защищенного соединения в сети Интернет.

Назначение документа

Данный документ в первую очередь ориентирован на команду технических специалистов и архитекторов Заказчика. В документе описывается техническая архитектура Системы.

Сетевая архитектура

В этом разделе будет представлена схема расположения и взаимодействия компонентов платформы НейроВижн™.

Общая архитектура системы

Платформа НейроВижн™ представляет собой микросервисную архитектуру, что обеспечивает высокую масштабируемость, устойчивость и модульность системы.

Используемые технологии

  • Docker и Kubernetes: для контейнеризации и оркестрации микросервисов.

  • Cassandra и PostgreSQL: в качестве баз данных.

  • RabbitMQ: для асинхронного взаимодействия между микросервисами с использованием очередей сообщений.

Микросервисы и их взаимодействие

1. Backend API (Nodejs):

  • Принимает изображения через HTTPS.

  • Координирует взаимодействие между другими микросервисами.

  • Сохраняет и извлекает данные из баз данных.

2. Frontend (ReactJS):

  • Предоставляет пользовательский интерфейс для взаимодействия с системой.

  • Отображает результаты анализа изображений.

3. DB Cassandra и DB PostgreSQL:

  • Хранят информацию, необходимую для работы платформы.

4. AMQP RabbitMQ:

  • Обеспечивает асинхронное взаимодействие между микросервисами.

5. Микросервисы с нейронными сетями:

  • PPS (детектор лиц): находит лица на изображениях.

  • Embedding: создает векторы лиц.

  • FAISS: осуществляет поиск в индексах векторов и сравнивает лица.

  • Mask, Gender, Mood, Race, Glasses, Age: анализируют лица на различные атрибуты, такие как наличие маски, пол, настроение, раса, наличие очков и возраст.

Взаимодействие микросервисов

  • Изображение загружается через Backend API.

  • Backend API отправляет изображение в PPS для обнаружения лиц.

  • Обнаруженные лица анализируются с помощью других микросервисов (Embedding, FAISS, Mask и др.).

  • Результаты анализа отправляются обратно в Backend API, который агрегирует их и предоставляет для отображения через Frontend.

Отказоустойчивость

1. Репликация и Кластеризация Баз Данных:

  • Базы данных Cassandra и PostgreSQL настроены на работу в режиме кластера. Это обеспечивает высокую доступность и отказоустойчивость, так как данные реплицируются на нескольких узлах.

2. Кластер Kubernetes:

  • Все микросервисы запущены в кластере Kubernetes, который обеспечивает автоматическое восстановление от сбоев (автоматический перезапуск контейнеров при их падении).

3. Балансировка нагрузки:

  • Входящий трафик распределяется с помощью балансировщика нагрузки (NGINX), что позволяет равномерно распределять нагрузку между инстанциями микросервисов и обеспечивает отказоустойчивость при выходе из строя отдельных инстанций.

Масштабирование

1. Горизонтальное масштабирование:

  • Все микросервисы, включая базы данных, могут быть горизонтально масштабированы путем добавления новых инстанций (контейнеров) в кластер. Kubernetes может автоматически масштабировать количество инстанций микросервисов в зависимости от нагрузки.

2. Автоматическое Масштабирование в Kubernetes:

  • Kubernetes поддерживает автоматическое масштабирование на основе CPU и памяти, что позволяет динамически адаптировать систему под изменяющуюся нагрузку.

3. Распределенное Хранение Данных:

  • Использование Cassandra и PostgreSQL в режиме кластера позволяет масштабировать хранение данных, добавляя новые узлы в кластер.

Last updated