1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/opengoofy-hippo4j

Клонировать/Скачать
README.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 26.05.2025 09:25 40c9d3d

Динамически наблюдаемый пул потоков, повышающий способность обеспечения работы системы

Лицензия Статус сборки

star Docker Pulls codecov EN doc

Статус звезд за время Количество участников за время
Статус звезд за время Количество участников за время

GitHub: opengoofy/hippo4j
Gitee: opengoofy/hippo4j

Для полной документации и дополнительных сведений посетите: Docs

Точки боли с пулами потоков


Пул потоков — это инструмент управления потоками на основе идеи пула. Использование пула потоков позволяет снизить затраты на создание и уничтожение потоков, а также избежать перегрузки сервера из-за избыточного количества потоков. В сценариях с высокой конкуренцией и обработкой большого объема задач использование пула потоков является неотъемлемой частью.

Если вы используете пулы потоков в проекте, вы, вероятно, столкнетесь с следующими проблемами:- Пул потоков определяется произвольно, что приводит к избыточному количеству потоков и высокой нагрузке на сервер.

  • Параметры пула потоков трудно оценить, что увеличивает риск возникновения проблем с работой при увеличении параллелизма бизнес-процессов.
  • Время выполнения задач пула потоков превышает среднее время выполнения, что делает невозможным для разработчиков его обнаружение.
  • Задачи в пуле потоков накапливаются, что приводит к активации стратегии отказа и влияет на нормальное функционирование существующих бизнес-процессов.
  • При возникновении проблем с задержками, разрывами и другими вопросами в бизнес-процессах, из-за отсутствия мониторинга, невозможно определить, вызваны ли они пулеметом потоков.
  • Нативные пулы потоков не поддерживают передачу переменных в процессе выполнения, например, контекст MDC теряет актуальность при использовании пула потоков.
  • Невозможно выполнить грациозное завершение работы, когда проект закрывается, множество выполняющихся задач пула потоков теряются.
  • При выполнении задач в пуле потоков происходит остановка выполнения, что вызывает подозрения о возможном возникновении мертвых блокировок или выполнении длительных операций, но нет способа это проверить.### Что такое Hippo4j

Предоставляет следующие функции:- Глобальное управление — управление экземплярами пулов потоков приложения.

  • Динамическое изменение — динамическое изменение параметров пула потоков во время выполнения приложения, включая, но не ограничиваясь: ядром, максимальным количеством потоков, емкостью блокирующей очереди, стратегией отказа и т. д.
  • Уведомление и оповещение — встроенные четыре стратегии оповещения, включая активность пула потоков, уровень заполнения, стратегию отказа и длительное выполнение задач.
  • Сбор данных — поддержка множества методов сбора данных пула потоков, включая, но не ограничиваясь: логирование, встроенный сбор данных, Prometheus, InfluxDB, ElasticSearch и т. д.
  • Мониторинг выполнения — временная проверка данных выполнения пула потоков, отображение графиков данных выполнения пула потоков в заданное пользователем время.
  • Расширение функциональности — поддержка передачи контекста задачи пула потоков; при закрытии проекта, поддержка ожидания завершения задач пула потоков в заданное время.
  • Множество режимов — встроенные два режима использования: зависимость от центра конфигурации и без зависимости от промежуточного программного обеспечения.
  • Управление контейнерами — просмотр и изменение количества потоков пула потоков в контейнерах Tomcat, Jetty, Undertow во время выполнения.- Адаптация к фреймворкам - Просмотр и изменение количества потоков пула потоков во время выполнения для фреймворков Dubbo, Hystrix, RabbitMQ, RocketMQ и др.
  • Аудит изменений - Предоставление множества ролей пользователей, обычные пользователи должны получить одобрение от пользователя Admin для изменения параметров пула потоков.
  • Динамические плагины - Встроенные множественные плагины пула потоков, поддерживающие пользовательские плагины и расширение во время выполнения.
  • Поддержка нескольких версий - Пройденные реальные тесты, поддерживают клиентские версии SpringBoot 1. 5. x => 2. 7. 5 (высшие версии не тестировались). ### Архитектурный дизайн---
image

Быстрый старт


Для локальной демонстрации обратитесь к Быстрый старт

Демонстрационная среда: http://console.hippo4j.cn/index.html

Интеграция и регистрация


Для компаний, желающих интегрироваться, приветствуем регистрацию на адрес регистрации. Регистрация проводится исключительно для продвижения продукта.

Связаться со мной


Открытое ПО не простое дело, нажмите Star в правом верхнем углу, чтобы поддержать!

Если вы хотите в реальном времени следить за обновлениями статей и полезными материалами Hippo4j, вы можете подписаться на мой официальный аккаунт.

В процессе использования, если у вас возникли какие-либо вопросы или у вас есть предложения по проекту, вы можете подписаться на официальный аккаунт и отправить сообщение: "Добавить в группу", чтобы обсудить с более чем 1000 единомышленниками.

image

Глубокое понимание принципов


Даже если ваша компания не использует сценарии Hippo4j, я рекомендую ознакомиться с основными принципами проекта по следующим причинам:- Для повышения качества кода и последующего расширения поведения используются различные паттерны проектирования для обеспечения высокой внутренней согласованности и низкой耦合。Фреймворк на уровне ядра зависит от фреймворка Spring и широко использует связанные с ним функции.

  • Используются различные инструменты из пакета JUC для обеспечения безопасности многопоточной работы, а также для понимания многопоточного программирования через реальные сценарии.
  • Вдохновляясь популярными открытыми фреймворками Nacos и Eureka, реализуется функционал легковесного центра конфигураций и регистрации.
  • Создается пользовательский фреймворк RPC, который использует Netty для улучшения сетевого взаимодействия между клиентом и сервером.
  • Используются плагины CheckStyle и Spotless для стандартизации написания кода, обеспечивая высокое качество кода и его стилистику.### Дружественные ссылки

  • [Sa-Token]: легковесный Java-фреймворк для управления правами доступа, делающий процесс аутентификации простым и элегантным.
  • [HertzBeat]: удобная и дружественная система мониторинга для облачных сред, не требующая агента, с мощными возможностями настройки мониторинга.
  • [JavaGuide]: полное руководство по основным знаниям, необходимым для большинства Java-программистов.
  • [toBeBetterJavaer]: простое и понятное руководство по изучению Java, написанное в легком и забавном стиле.
  • [Jpom]: легкий и независимый инструмент для онлайн-конструирования, автоматического развертывания, повседневного обслуживания и мониторинга проектов.
  • [12306]: проект, который реализует высокоподобную систему 12306 для пользователей, бронирования билетов, заказов и платежей, направленный на помощь студентам в поиске работы.
  • [CongoMall]: корпоративный интернет-магазин, разработанный на основе модели областного драйвера (DDD), включающий бизнес-процессы магазина и базовую архитектуру.

Контрибьюторы


Спасибо всем разработчикам, внесшим свой вклад в проект. Если вы хотите внести свой вклад, ознакомьтесь с good first issue.

Благодарности


Коммьюнити Hippo4j получило несколько лицензий от JetBrains и распределило их среди активных разработчиков. Большое спасибо компании JetBrains за поддержку открытого сообщества.

Логотип JetBrains

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/opengoofy-hippo4j.git
git@api.gitlife.ru:oschina-mirror/opengoofy-hippo4j.git
oschina-mirror
opengoofy-hippo4j
opengoofy-hippo4j
develop