ищу "все делает буфер" в java- решил работать с нетти - PullRequest
5 голосов
/ 15 октября 2011

Некоторый фон:

Я работаю над некоторыми java-пакетами, которые должны собирать данные, делить их и распространять на многих серверах онлайн. По коду пользователя (человеку, использующему мои пакеты) я буду знать, какой тип буфера использовать. Я видел The Netty Project, который имеет в виду некоторые интересные концепции и другие решения, предложенные здесь на сайте, но не совсем то, что я ищу. Я думаю, что могу выполнить свои требования, но мне больше нравится повторное использование.

Фактическая проблема: требования к байтовому буферу

Отдельная реализация от интерфейса. Изменение между двумя реализациями.

Фиксированный размер:

  1. Прямое использование памяти.
  2. Zero Copy IO при распространении.

Размер выращивания

  1. Может вырасти до определенного размера.
  2. Сохраняет баланс между перераспределением и объемом используемой памяти.

Обновление 1: решил использовать библиотеку проектов Netty из-за множества других преимуществ.

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

Я понимаю, что буферы могут работать лучше, когда они напрямую отображаются в память. Нетти обеспечивает это для меня, но я не могу заставить этот буфер расти. У меня есть динамический буфер, который может расти - Netty это тоже обеспечивает.

Пара вопросов:

  1. я должен скопировать буфер из динамического в прямой в случае его изменения? Есть ли способ переключения режимов?

  2. Что вы думаете о реализации класса, который содержит массив ChannleBuffers и предоставляет тот же интерфейс, что и ChannleBuffer, в то время как содержит «внутри» массив буферов, выделяющих новую прямую память по мере необходимости.

  3. Есть ли у вас другие решения?

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Я бы хорошо посмотрел на разброс / сборку NIO на массивах прямых байтовых буферов. Прямой доступ дает вам ввод-вывод без копирования, а массив дает вам механизм для роста.

1 голос
/ 18 августа 2012

Я узнал, что Нетти снабдил меня всем, что мне нужно, и не только.

...