Надувной замок параллельный ZlibCompressor - PullRequest
0 голосов
/ 20 февраля 2019

Наше приложение читает и записывает множество зашифрованных файлов, и мы создали классы, которые реализуют InputStream и OutputStream для обработки всех этих деталей.Эти реализации работают нормально (и, между прочим, очень удобны в использовании).

Чтобы быть более конкретным, когда мы пишем (в нашей реализации OutputStream), мы используем CMS Bouncy Castle (версия 1.53)классов, и мы сжимаем, подписываем, шифруем и снова подписываем.

Проблема, с которой мы сталкиваемся, заключается в том, что мы иногда пишем большие (> 1 ГБ после сжатия, 10 + ГБ до сжатия) файлы, и это может занять от 1 часа донаписать.Во время этого процесса один ЦП привязан;узким местом является шаг сжатия (на основе профилирования).Это не вариант, чтобы не сжимать - мы получаем хорошее сжатие (лучше, чем в 10 раз), эти файлы передаются по сети (намного меньше, гораздо быстрее), и мы платим за хранение этих файлов, по сути, навсегда, так что гораздо меньше дешевле.

Серверы, на которых мы обычно запускаем этот код, - это экземпляры AWS EC2 c5.4xlarge, которые имеют много памяти и 16 процессоров.

Вот код для установки сжатия:

import org.bouncycastle.cms.CMSCompressedDataStreamGenerator;

CMSCompressedDataStreamGenerator compressedGenerator = new CMSCompressedDataStreamGenerator();
compressedStream = compressedGenerator.open(signedStream, new ZlibCompressor());

Мы столкнулись с подобной ситуацией, когда мы GZIP (а не шифруем) большие файлы.Мы успешно обошли это узкое место производительности, используя параллельный модуль записи GZIP .С помощью параллельного модуля записи GZIP мы можем эффективно использовать все доступные процессоры и завершить сжатие за меньшее время по сравнению с использованием реализации JDK по умолчанию.

Вопрос:

  • Есть ли способ настроить / вызвать Bouncy Castle для распараллеливания ZlibCompressor?
  • Есть ли другой компрессор Bouncy Castle, который мы можем / должны использовать, который обеспечит эквивалентное сжатие и значительно улучшит пропускную способность?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...