ищу "делающий все буфер" в java - решил работать с Netty

Немного предыстории:

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

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

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

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

  1. Прямое использование памяти.
  2. Нулевое копирование ввода-вывода при распространении.

Растущий размер

  1. Может расти до определенного размера.
  2. Поддерживает баланс между перераспределением и количеством используемой памяти.

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

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

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

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

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

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

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

5
задан Paul Jackson 26 October 2011 в 02:21
поделиться