"Netty Album" Первое знакомство с Нетти

задняя часть
"Netty Album" Первое знакомство с Нетти

1. Что такое Нетти?

НеттиАсинхронная платформа веб-приложений, управляемая событиями,Для быстрой разработки поддерживаемых высокопроизводительных протокольных серверов и клиентов. 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

Добро пожаловать, лайкайте, пересылайте и подписывайтесь на тройной щелчок!