Netty с блокированием IO клиентов, браузеров - PullRequest
3 голосов
/ 12 декабря 2011

У меня есть устаревшее приложение (HTTP и необработанный TCP), которое использует традиционный BIO (блокирующий ввод-вывод), и я хотел бы начать заменять его на Netty.

Как Netty работает с традиционными клиентами BIO? Есть ли какие-либо проблемы, если я сначала заменю серверный компонент на Netty и оставлю клиентов BIO на месте?

Кроме того, может ли встроенный сервер Netty заменить типичный веб-сервер HTTP, предназначенный для клиентов браузера? Есть какие-то проблемы?

Спасибо

1 Ответ

3 голосов
/ 12 декабря 2011

Насколько я понимаю, netty поддерживает блокирующие (org.jboss.netty.channel.socket.oio) и неблокирующие (org.jboss.netty.channel.socket.nio) операции.См. http://docs.jboss.org/netty/3.2/guide/html/architecture.html раздел 2.2.

Легко переключаться между блокировкой и неблокировкой, поэтому вы можете попробовать с NIO, а если это не с вашими клиентами, вы можете переключиться на OIO.Вы устанавливаете тип ввода-вывода, который хотите поддерживать, и настраиваете ChannelFactory

// NIO - non blocking
ChannelFactory factory =
        new NioSeverSocketChannelFactory(
                Executors.newCachedThreadPool(),
                Executors.newCachedThreadPool());

//OIO - blocking
ChannelFactory factory =
        new OioServerSocketChannelFactory(
                Executors.newCachedThreadPool(),
                Executors.newCachedThreadPool());

. Уже существует ряд уже реализованных HTTP-веб-серверов на базе Netty.Например, webbit , xitrum и play framework .Я уверен, что есть еще.Это только те, о которых я могу подумать.

Если вы хотите реализовать свои собственные, хорошей отправной точкой являются примеры в пакете org.jboss.netty.example.http.

...