Woodpecker
В Milvus 2.6 Woodpecker заменяет Kafka и Pulsar специально разработанной облачной системой журналов с опережающей записью (WAL). Разработанная для объектных хранилищ, Woodpecker упрощает операции, максимизирует пропускную способность и легко масштабируется.
Цели разработки Woodpecker:
Высочайшая пропускная способность в облачных средах.
Долговечное протоколирование только с использованием приложений для надежного восстановления
Минимальные эксплуатационные расходы без локальных дисков и внешних брокеров.
Архитектура с нулевым диском
Основная инновация Woodpecker - архитектура с нулевым диском:
- Все данные журнала хранятся в облачном объектном хранилище (например, Amazon S3, Google Cloud Storage или Alibaba OS).
- Метаданные управляются через распределенные хранилища ключевых значений, такие как etcd.
- Отсутствие зависимости от локального диска для основных операций
слои woodpecker
Компоненты архитектуры
Стандартное развертывание Woodpecker включает в себя следующие компоненты:
- Клиент: Интерфейсный уровень для выдачи запросов на чтение и запись
- LogStore: Управляет высокоскоростной буферизацией записей, асинхронной загрузкой в хранилище и уплотнением журналов.
- Бэкэнд хранилища: Поддерживает масштабируемые и недорогие службы хранения, такие как S3, GCS, и файловые системы типа EFS.
- Etcd: Хранит метаданные и координирует состояние журналов на распределенных узлах.
Режимы развертывания
Woodpecker предлагает два режима развертывания в соответствии с вашими потребностями:
MemoryBuffer - Легкий и не требующий обслуживания.
Режим MemoryBuffer обеспечивает простой и легкий вариант развертывания, при котором встроенный клиент Woodpecker временно буферизует входящие записи в памяти и периодически сбрасывает их в облачный сервис хранения объектов. В этом режиме буфер памяти встроен непосредственно в клиент, что обеспечивает эффективную сортировку перед отправкой в S3. Управление метаданными осуществляется с помощью etcd для обеспечения согласованности и координации. Этот режим лучше всего подходит для пакетных рабочих нагрузок в небольших развертываниях или производственных средах, для которых простота важнее производительности, особенно если низкая задержка записи не является критичной. Задержка записи в этом режиме обычно составляет 200-500 мс.
развертывание режимов памяти woodpecker
QuorumBuffer - оптимизирован для низких задержек и высокой долговечности
Режим QuorumBuffer предназначен для чувствительных к задержкам и высокой частоте чтения/записи рабочих нагрузок, требующих как реагирования в реальном времени, так и высокой отказоустойчивости. В этом режиме клиент Woodpecker взаимодействует с системой кворума из трех реплик для обеспечения высокоскоростной буферизации записи, гарантируя высокую согласованность и доступность благодаря распределенному консенсусу.
Запись считается успешной, когда клиент успешно реплицирует данные как минимум на два из трех узлов кворума, что обычно завершается в течение однозначных миллисекунд, после чего данные асинхронно сбрасываются в облачное хранилище объектов для обеспечения долговременной сохранности. Такая архитектура минимизирует состояние узлов, устраняет необходимость в больших локальных дисковых томах и позволяет избежать сложного восстановления против энтропии, которое часто требуется в традиционных системах на основе кворума.
В результате получается упрощенный и надежный уровень WAL, идеально подходящий для критически важных производственных сред, где важны согласованность, доступность и быстрое восстановление.
развертывание режима кворума woodpecker
Контрольные показатели производительности
Мы провели комплексные бенчмарки, чтобы оценить производительность Woodpecker на одном узле, с одним клиентом и одним лог-потоком. Результаты оказались впечатляющими по сравнению с Kafka и Pulsar:
| Система | Kafka | Pulsar | WP Minio | WP Local | WP S3 |
|---|---|---|---|---|---|
| Пропускная способность | 129,96 МБ/с | 107MB/s | 71MB/s | 450MB/s | 750MB/s |
| задержка | 58 мс | 35мс | 184 мс | 1,8 мс | 166 мс |
Для удобства мы измерили теоретические пределы пропускной способности различных бэкендов хранения данных на нашей тестовой машине:
- MinIO: ~110 МБ/с
- Локальная файловая система: 600-750 МБ/с
- Amazon S3 (один экземпляр EC2): до 1,1 ГБ/с.
Примечательно, что Woodpecker постоянно достигал 60-80% от максимально возможной пропускной способности для каждого бэкенда - исключительный уровень эффективности для промежуточного ПО.
Основные показатели производительности
- Режим локальной файловой системы: Woodpecker достиг скорости 450 МБ/с - 3,5× быстрее, чем Kafka, и 4,2× быстрее, чем Pulsar, - при сверхнизкой задержке всего 1,8 мс, что делает его идеальным для высокопроизводительных одноузловых развертываний.
- Режим облачного хранения (S3): При прямой записи в S3 скорость Woodpecker достигла 750 МБ/с (около 68 % от теоретического предела S3), что на 5,8× выше, чем у Kafka, и на 7× выше, чем у Pulsar. Несмотря на более высокую задержку (166 мс), эта установка обеспечивает исключительную пропускную способность для рабочих нагрузок, ориентированных на пакетную обработку.
- Режим хранения объектов (MinIO): Даже в режиме MinIO Woodpecker достиг 71 МБ/с - около 65 % от пропускной способности MinIO. Эта производительность сопоставима с Kafka и Pulsar, но при этом требует значительно меньше ресурсов.
Woodpecker особенно оптимизирован для одновременной записи больших объемов данных, где поддержание порядка имеет решающее значение. И эти результаты отражают только ранние этапы разработки - ожидается, что текущие оптимизации в области объединения ввода-вывода, интеллектуальной буферизации и предварительной выборки позволят еще больше повысить производительность до теоретических пределов.
Операционные преимущества
Облачная нативная архитектура Woodpecker обеспечивает значительные эксплуатационные преимущества:
- Нулевое управление локальным хранилищем: Исключается управление дисковыми томами, настройка RAID-массивов и аппаратные сбои.
- Автоматическое масштабирование: Хранилище масштабируется вместе с облачным объектным хранилищем без необходимости планирования емкости.
- Экономическая эффективность: Хранилище с оплатой по факту использования с автоматическим выравниванием и сжатием.
- Высокая доступность: Использование 11-девятикратной долговечности облачных провайдеров с быстрым восстановлением.
- Упрощенное развертывание: Два режима развертывания (MemoryBuffer/QuorumBuffer) соответствуют различным операционным потребностям.
- Удобство для разработчиков: Ускоренная настройка среды и согласованная архитектура во всех средах.
Эти преимущества делают Woodpecker особенно ценным для критически важных рабочих нагрузок RAG, агентов искусственного интеллекта и поиска с низкой задержкой, где простота эксплуатации важна не меньше, чем производительность.