1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/paradigm4-pafka

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Pafka: Persistent Memory (PMem) Accelerated Kafka

1. Введение

Pafka — это усовершенствованная версия Apache Kafka, разработанная компанией MemArk. Apache Kafka — это распределённая система обработки потоков событий и очередей сообщений с открытым исходным кодом, предназначенная для эффективной и надёжной обработки данных в реальном времени. Однако её производительность (например, пропускная способность и задержка) ограничена медленным внешним хранилищем. Pafka улучшает Kafka на основе многоуровневой архитектуры хранилища, которая обычно оснащена высокопроизводительными SSD или Intel® Optane™ Persistent Memory (PMem). Благодаря тщательному проектированию алгоритмов миграции данных она повышает общую производительность хранилища при низких затратах. Например, она может хорошо поддерживать сценарии, в которых высокая скорость производства данных повторяется через определённые промежутки времени (например, специальный дисконт предоставляется каждый час с веб-сайта магазина); она также способна улучшить общую производительность, когда требуется высокая пропускная способность в течение длительного периода.

Пожалуйста, обратитесь к нашему последнему блогу для ознакомления с тестами Pafka и вариантами использования:

2. Архитектура

Основная идея Pafka заключается в использовании многоуровневой архитектуры хранения для повышения общей производительности системы. В настоящее время центр обработки данных может иметь различные типы запоминающих устройств, такие как HDD, SSD и современные энергонезависимые постоянные запоминающие устройства (ПЗУ). Однако Kafka не учитывает такую иерархию хранения. В этом проекте мы улучшаем Kafka, используя высокопроизводительное устройство хранения, например PMem, в качестве первого уровня хранения вместе с тщательно разработанными алгоритмами миграции, чтобы значительно повысить общую производительность для конкретных сценариев.

Ключевая задача использования многоуровневого хранилища заключается в разработке механизма разделения данных и их миграции между быстрыми и медленными устройствами. Общая архитектура и ключевой рабочий процесс Pafka показаны на рисунке ниже. По сути, данные записываются в PMem при наличии свободного места, в противном случае — на жёсткий диск. Кроме того, существует фоновая задача миграции для балансировки данных между PMem и жёстким диском. В частности, вводится новый параметр storage.migrate.threshold, который указывает, когда запускается миграция. Когда используемое пространство PMem превышает пороговое значение, самые старые данные в PMem переносятся на жёсткий диск; в противном случае самые новые данные на жёстком диске переносятся в PMem. Миграция пытается сохранить свежие данные в PMem для обеспечения эффективности потребителей.

3. Начало работы

Полную документацию по Kafka см. здесь (README.kafka.md).

3.1. Образ Docker

Самый простой способ попробовать Pafka — использовать образ Docker: https://hub.docker.com/r/4pdopensource/pafka-dev.

docker run -it 4pdopensource/paka-dev bash

Если вы используете образ Docker, вы можете пропустить следующий шаг «Компиляция».

3.2. Компиляция

3.2.1. Зависимости

— pmdk pcj (https://github.com/4paradigm/pcj); — pmdk llpl (https://github.com/4paradigm/llpl).

:warning: Мы имеем...

Здесь перевод заканчивается, так как в запросе нет информации о том, что находится после предупреждения. Производитель

Один клиент
# bin/kafka-producer-perf-test.sh --topic $TOPIC --throughput $MAX_THROUGHPUT --num-records $NUM_RECORDS --record-size $RECORD_SIZE --producer.config config/producer.properties --producer-props bootstrap.servers=$BROKER_IP:$PORT
bin/kafka-producer-perf-test.sh --topic test --throughput 1000000 --num-records 1000000 --record-size 1024 --producer.config config/producer.properties --producer-props bootstrap.servers=localhost:9092
Несколько клиентов

Мы предоставляем скрипт, который позволит вам запустить несколько клиентов на нескольких хостах. Например, если вы хотите запустить 16 производителей на каждом из хостов node-1 и node-2, вы можете выполнить следующую команду:

bin/bench.py --threads 16 --hosts "node-1 node-2" --num_records 100000000 --type producer

Всего будет 32 клиента, которые сгенерируют 100 000 000 записей. Каждый клиент отвечает за заполнение одной темы.

Чтобы это работало, необходимо настроить вход без пароля с работающей машины на клиентские машины.

Вы можете запустить python3 bin/bench.py --help, чтобы увидеть другие варианты тестов.

Потребитель

Один клиент
# bin/kafka-consumer-perf-test.sh --topic $TOPIC --consumer.config config/consumer.properties --bootstrap-server $BROKER_IP:$PORT --messages $NUM_RECORDS --show-detailed-stats --reporting-interval $REPORT_INTERVAL --timeout $TIMEOUT_IN_MS
bin/kafka-consumer-perf-test.sh --topic test --consumer.config config/consumer.properties --bootstrap-server localhost:9092 --messages 1000000 --show-detailed-stats --reporting-interval 1000 --timeout 100000
Несколько клиентов

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

bin/bench.py --threads 16 --hosts "node-1 node-2" --num_records 100000000 --type consumer

4. Ограничения

  • pmdk llpl MemoryPool не предоставляет API ByteBuffer. Мы сделали некоторые изменения, чтобы предоставить API нулевого копирования ByteBuffer. Вы можете увидеть некоторые предупреждения от JRE с версией >= 9. Мы протестировали на Java 8, Java 11 и Java 15.

    ВНИМАНИЕ: Произошла незаконная операция рефлексивного доступа ВНИМАНИЕ: Незаконный рефлексивный доступ com.intel.pmem.llpl.MemoryPoolImpl к полю java.nio.Buffer.address ВНИМАНИЕ: Рассмотрите возможность сообщить об этом сопровождающим com.intel.pmem.llpl.MemoryPoolImpl ВНИМАНИЕ: Используйте --illegal-access=warn для включения предупреждений о дальнейших незаконных операциях рефлексивного доступа ВНИМАНИЕ: Все незаконные операции доступа будут запрещены в будущем выпуске

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

5. План развития

Версия Статус Функции
v0.1.1 Выпущено - Использование PMem для хранения данных
- Значительное повышение производительности по сравнению с Kafka
v0.2.0 Выпущено - Стратегия двухуровневого хранилища для использования общей ёмкости всех устройств хранения при сохранении эффективности с помощью наших алгоритмов миграции холодных и горячих данных
- Дальнейшее улучшение производительности PMem за счёт использования libpmem
v0.3.0 Выпущено - Настраиваемые устройства хранения для обоих уровней, для поддержки использования больших SSD/NVMe в качестве первого уровня

6. Сообщество

Pafka разрабатывается MemArk (https://memark.io/en), технологическим сообществом, которое фокусируется на использовании современной архитектуры хранения для улучшения системы. MemArk возглавляет 4Paradigm (https://www.4paradigm.com/) и другие спонсоры (например, Intel). Присоединяйтесь к нашему сообществу для:

  • Общения: Для любых отзывов, предложений, проблем и всего, что касается использования Pafka или других тем, связанных с хранением, мы настоятельно рекомендуем присоединиться к нашему интерактивному каналу обсуждения в Slack #pafka-help
  • Обсуждения разработки: Если вы хотите официально сообщить об ошибке или предложении, пожалуйста, используйте GitHub Issues; если вы хотели бы предложить новую функцию для обсуждения или начать тянуть Используйте GitHub Discussions, и наши разработчики оперативно ответят вам.

Вы также можете обратиться в сообщество MemArk для обратной связи: contact@memark.io

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Pafka is originated from the OpenAIOS project to leverage an optimized tiered storage access strategy to improve overall performance for streaming/messaging system. Развернуть Свернуть
Java и 6 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/paradigm4-pafka.git
git@api.gitlife.ru:oschina-mirror/paradigm4-pafka.git
oschina-mirror
paradigm4-pafka
paradigm4-pafka
main