🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Концепции
  • Home
  • Docs
  • Концепции

  • Архитектура

  • Хранение/вычисления

Дезагрегация систем хранения данных и вычислений

Следуя принципу дезагрегации плоскости данных и плоскости управления, Milvus состоит из четырех уровней, которые являются взаимно независимыми с точки зрения масштабируемости и аварийного восстановления.

Уровень доступа

Состоящий из группы прокси-серверов без статического управления, уровень доступа является передним уровнем системы и конечной точкой для пользователей. Он проверяет запросы клиентов и сокращает возвращаемые результаты:

  • Прокси сам по себе не имеет статусов. Он обеспечивает единый адрес сервиса, используя компоненты балансировки нагрузки, такие как Nginx, Kubernetes Ingress, NodePort и LVS.
  • Поскольку в Milvus используется архитектура массивно-параллельной обработки (MPP), прокси агрегирует и обрабатывает промежуточные результаты, прежде чем вернуть клиенту окончательные результаты.

Служба координатора

Служба-координатор распределяет задачи между рабочими узлами и выполняет функции "мозга" системы. Среди задач, которые он берет на себя, - управление топологией кластера, балансировка нагрузки, генерация временных меток, объявление данных и управление данными.

Существует три типа координаторов: корневой координатор (root coord), координатор данных (data coord) и координатор запросов (query coord).

Корневой координатор (root coord)

Корневой координатор обрабатывает запросы языка определения данных (DDL) и языка управления данными (DCL), такие как создание или удаление коллекций, разделов или индексов, а также управляет выдачей TSO (timestamp Oracle) и временных тикеров.

Координатор запросов (query coord)

Query coord управляет топологией и балансировкой нагрузки для узлов запросов, а также передачей данных из растущих сегментов в закрытые сегменты.

Координатор данных (data coord)

Координатор данных управляет топологией узлов данных и узлов индекса, поддерживает метаданные, запускает операции промывки, уплотнения, создания индекса и другие фоновые операции с данными.

Рабочие узлы

Руки и ноги. Рабочие узлы - это немые исполнители, которые следуют инструкциям службы координатора и выполняют команды языка манипулирования данными (DML), поступающие от прокси. Рабочие узлы не имеют статических данных благодаря разделению хранения и вычислений и могут способствовать масштабированию системы и аварийному восстановлению при развертывании на Kubernetes. Существует три типа рабочих узлов:

Узел запросов

Узел запросов получает инкрементные данные журнала и превращает их в растущие сегменты, подписываясь на брокера журналов, загружает исторические данные из объектного хранилища и выполняет гибридный поиск между векторными и скалярными данными.

Узел данных

Узел данных получает инкрементные данные журнала, подписываясь на брокера журнала, обрабатывает запросы на мутацию, упаковывает данные журнала в снимки журнала и сохраняет их в объектном хранилище.

Индексный узел

Индексный узел создает индексы. Индексные узлы не обязательно должны быть резидентными в памяти и могут быть реализованы с помощью бессерверного фреймворка.

Хранилище

Хранилище - это кость системы, отвечающая за сохранность данных. Оно включает в себя метахранилище, брокер журналов и хранилище объектов.

Метахранилище

Метахранилище хранит снимки метаданных, таких как схема коллекции и контрольные точки потребления сообщений. Хранение метаданных требует чрезвычайно высокой доступности, высокой согласованности и поддержки транзакций, поэтому Milvus выбрал etcd для метахранилища. Milvus также использует etcd для регистрации и проверки работоспособности сервисов.

Объектное хранилище

В объектном хранилище хранятся файлы моментальных снимков журналов, индексные файлы для скалярных и векторных данных, а также промежуточные результаты запросов. Milvus использует MinIO в качестве объектного хранилища и может быть легко развернут на AWS S3 и Azure Blob, двух самых популярных и экономически эффективных сервисах хранения данных в мире. Однако объектное хранилище имеет высокую задержку доступа и тарифицируется по количеству запросов. Чтобы повысить производительность и снизить затраты, Milvus планирует реализовать разделение данных "холодный-горячий" в пуле кэша на базе памяти или SSD.

Брокер журналов

Брокер журналов - это система pub-sub, поддерживающая воспроизведение. Он отвечает за сохранение потоковых данных и уведомление о событиях. Он также обеспечивает целостность инкрементных данных при восстановлении рабочих узлов после сбоев в системе. В кластере Milvus в качестве лог-брокера используется Pulsar; в автономном Milvus в качестве лог-брокера используется RocksDB. Кроме того, лог-брокер можно легко заменить платформами для хранения потоковых данных, такими как Kafka.

Milvus построен на базе лог-брокера и следует принципу "лог как данные", поэтому Milvus не поддерживает физические таблицы, но гарантирует надежность данных за счет персистентности логов и журналов моментальных снимков.

Log_mechanism Механизм логирования

Лог-брокер является основой Milvus. Благодаря встроенному механизму pub-sub он отвечает за сохранение данных и их разделение по принципу "чтение-запись". На рисунке выше показано упрощенное изображение механизма, где система разделена на две роли - брокера журналов (для поддержания последовательности журналов) и подписчика журналов. Первый регистрирует все операции, изменяющие состояние коллекции; второй подписывается на последовательность журналов для обновления локальных данных и предоставляет услуги в виде копий, доступных только для чтения. Механизм pub-sub также позволяет расширить систему в плане сбора данных об изменениях (CDC) и глобально-распределенного развертывания.

Что дальше

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?