НеттиАсинхронная платформа веб-приложений, управляемая событиями,Для быстрой разработки поддерживаемых высокопроизводительных протокольных серверов и клиентов. Netty — это клиент-серверная среда NIO, которая позволяет быстро и легко разрабатывать сетевые приложения, такие как серверы протоколов и клиенты. Это значительно упрощает сетевое программирование, такое как серверы сокетов TCP и UDP.
Из схемы архитектуры Netty видно, что ядро Netty состоит из трех точек:
Буферизация с нулевым копированием
Общий коммуникационный API
Расширяемая модель событий
2. Нетти оглядывается назад
2.1 Нетти Автор
Netty была разработана компанией Trustin Lee (Корея, Line Company) в 2004 году. На картинке выше сам автор, картинку я украл с гитхаба😝. Netty имеет открытый исходный код уже 16 лет, и я должен восхищаться настойчивостью автора, и он до сих пор очень часто обновляется. Он внимательно следит за JDK.
2.2 Эволюция версии Netty
июнь 2004 г.Netty2выпуск
Утверждает, что является первой управляемой временем сетевой средой приложений в сообществе Java.
октябрь 2008 г.Netty3выпуск
Июль 2013Netty4выпуск
Опубликовано в декабре 2013 г.Netty5.0.0.Alpha 1
Заброшен в ноябре 2015 г.5.0.0
2.3 Почему версия 5.0 устарела?
Давайте посмотрим на официальный ответ. Слова в красной рамке на картинке - это ответ, данный Норманом Маурером (Германия, Apple и один из основных сопровождающих Netty). Перевод означает, что основное изменение с использованием ForkJoinPool увеличивается сложность, и не было продемонстрировано значительного преимущества в производительности. Также требуется много работы, чтобы синхронизировать все ветки, когда это на самом деле не нужно. Вот он и предложил отказаться от этой версии.Основная причина отказа от 5.0 это:
Слишком сложно и без преимущества в производительности
Энергия ограничена, и обслуживание не может прийти.
3. Почему стоит выбрать Нетти?
3.1 Зачем искать дальше, чем вблизи?
нетти делает больше:
Поддерживает часто используемые протоколы прикладного уровня
Решение проблем с передачей: липкий пакет, феномен половинного пакета
Поддерживает формирование трафика
Идеальное отключение, бездействие и другая обработка исключений
нетти делает это лучше:
Избегайте ошибок JDK NIO
Классическая ошибка epoll: ненормальное пробуждение вызывает 100% загрузку процессора
API лучше и мощнее
Изолируйте изменения, маскируйте детали
3.2 Почему бы не выбрать другое?
Apache Mina
Netty и Apache Mina — один и тот же автор, но сам автор предпочитает Netty, потому что Netty — это попытка восстановить Mina с нуля и исправить известные проблемы.
Sun Grizzly
Этот, как и Netty, родился в 2004 году, но он не так популярен, как Netty, и его использует меньше людей, он больше не поддерживается, последнее обновление было три года назад.
Apache Switf NIO, ACE и т. д.
Другие языки, не java, поэтому не рассматриваю.
Cindy
Короткий период декларирования
Томкэт, пристань
Коммуникационная часть еще не является самостоятельной.
4. Текущее состояние сообщества Netty
Github
https://github.com/netty/netty
В настоящее время на github есть несколько стабильных версий Netty, stat23.9k и fork 11.4k.
Статус приложения:
По состоянию на июнь 2020 года используется более 40 000 проектов. Статистический метод: io.netty:netty-all, объявленный в зависимостях
По состоянию на июнь 2020 года насчитывается 465 участников.
Последняя выпущенная версия — 4.1.50.Final.
5. Типовой проект
База данных: Кассандра
Большие данные: Spark, Hadoop
Очередь сообщений: Rocketmq
Получение: Elasticsearch
Фреймворк: gRPC, Apache Dubbo, Spring5
Распределенный координатор: Zookeeper
Класс инструмента: async-http-client
6. Тенденции в Нетти
Поддержка более популярных протоколов
Не отставайте от новых функций Jdk
Более простые в использовании и удобные функции (черный и белый список IP-адресов, формирование трафика и т. д.)
Все больше и больше приложений Netty
Добро пожаловать, лайкайте, пересылайте и подписывайтесь на тройной щелчок!