Сетевой протокол Netty в современных клиент-серверных приложениях работает на основе асинхронной и событийно-ориентированной модели программирования. 14
В основе архитектуры Netty лежит концепция каналов (Channel), которые представляют соединения между клиентами и серверами. 1 Каждый канал ассоциируется с конвеером обработчиков (ChannelPipeline), через который проходят все входящие и исходящие сообщения. 1
Конвейер состоит из цепочки обработчиков (ChannelHandler), каждый из которых отвечает за определённый этап обработки данных: декодирование пакетов, агрегацию фрагментированных сообщений, бизнес-логику и так далее. 1
Некоторые особенности работы протокола:
- Асинхронная природа. 1 В отличие от традиционной блокирующей модели ввода-вывода, где каждое соединение требует выделения отдельного потока, Netty использует неблокирующий подход. 1 Это позволяет обслуживать тысячи соединений в рамках ограниченного пула потоков. 1
- EventLoop — сердце асинхронной модели Netty. 1 Это поток, который непрерывно проверяет готовность каналов к операциям чтения/записи и обрабатывает связанные события. 1
- Управление жизненным циклом соединений. 1 Любой канал проходит через предсказуемый набор состояний: регистрация, активация, деактивация, закрытие. 1 На каждом этапе вызываются соответствующие обработчики, что позволяет выполнять необходимые действия: инициализировать контекст сессии, освобождать ресурсы, логировать активность. 1
- Поддержка различных протоколов. 4 Netty позволяет передавать данные через TCP или UDP, поддерживает множество протоколов, таких как HTTP, FTP, SMTP, WebSockets, SSL/TLC, SPDY. 2