HTTP-клиент с NIO2

У кого-нибудь есть знакомый с HTTP-клиентом, основанным на JDK7 и NIO2, реализация, которая использует: AsynchronousSocketChannel

Я ищу реализацию, основанную на NIO2 и способную масштабировать неограниченное количество тысяч HTTP-запросов одновременно.

ПРИМЕЧАНИЯ:

  1. пожалуйста, не предлагайте мне реализацию, основанную на NIO1, например Apache::AsyncHTTPClient и JBOSS::Netty framework

  2. Пожалуйста, не предлагайте мне решение, основанное на решении для распространения, я ищу одного клиента, который может эффективно обрабатывать все HTTP-запросы.

БЛАГОДАРНОСТЬ!


person John    schedule 19.09.2011    source источник
comment
почему вы настаиваете на nio2? если нетти или гризли могут удовлетворить ваши требования, почему бы не использовать один из них?   -  person sbridges    schedule 20.09.2011
comment
Нет никаких причин, по которым вам нужно масштабировать AsynchronousSocketChannel до тысяч одновременных запросов. На самом деле нет причин, по которым вам вообще нужен NIO(1), java.net отлично с этим справляется. Итак, в чем ваша причина?   -  person user207421    schedule 10.10.2011
comment
@irobson Ваш ответ не отвечает на вопрос, он довольно груб. Автор попросил решение Java с использованием NIO2 на JDK7. Node.js — это сервер javascript, работающий поверх движка V8 js от Google. Кроме того, Node.js работает примерно вдвое хуже, чем NIO2 (AIO) olympum. com/java/java-aio-vs-nodejs.   -  person jeckhart    schedule 29.10.2011


Ответы (2)


Я бы рекомендовал проверить AsyncHttpClient. Его написал парень, который написал Grizzy для Sun, а теперь работает в Sonatype.

person jeckhart    schedule 31.10.2011

Я считаю, что вы ошибаетесь в своем предположении, что вы должны использовать NIO2 для масштабирования. Пожалуйста, послушай!

NIO2 — это неблокирующая версия ввода-вывода Java. Это означает, что проще написать высокопроизводительный ввод-вывод в NIO2, потому что вам не нужно запускать потоки и управлять ими, поскольку большинство ваших потоков просто будут ожидать ввода-вывода. Многопоточное программирование сложно, поэтому все, что упрощает его, является функцией, отсюда и NIO2.

Однако как пользователя библиотеки, пользователя, не волнует, насколько сложно было написать библиотеку. Современные JVM могут обрабатывать множество потоков, а старый io API должен быть мощным, если его используют опытные программисты. Поскольку вы являетесь пользователем библиотеки, я предлагаю вам просто найти самую быструю библиотеку.

HTTPClient от Apache — очень популярная библиотека. Я предлагаю вам связаться с экспертами по этому вопросу и задать им вопросы о производительности. Я не эксперт в этой области, поэтому я не говорю вам, что HTTPClient — лучший, я просто говорю, что пока не стоит его сбрасывать со счетов, и что общение с людьми, занимающимися HTTPClient, было бы хорошим началом.

Удачи

person Glen P    schedule 10.10.2011
comment
NIO(1) в JDK 1.4 уже был неблокирующей версией java.net. NIO2 в JDK 1.7 также содержит асинхронный ввод-вывод. - person user207421; 10.10.2011
comment
Я даже не знал, что существует две версии NIO. Кто-то немного отредактировал мой ответ. Но, как я уже сказал, старый Java IO (не NIO) также является качественным программным обеспечением, просто имеет блокирующий дизайн. - person Glen P; 24.10.2011