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


Статус звезд за время |
Количество участников за время |
 |
 |
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 (высшие версии не тестировались). ### Архитектурный дизайн---
Быстрый старт
Для локальной демонстрации обратитесь к Быстрый старт
Демонстрационная среда: http://console.hippo4j.cn/index.html
Интеграция и регистрация
Для компаний, желающих интегрироваться, приветствуем регистрацию на адрес регистрации. Регистрация проводится исключительно для продвижения продукта.
Связаться со мной
Открытое ПО не простое дело, нажмите Star в правом верхнем углу, чтобы поддержать!
Если вы хотите в реальном времени следить за обновлениями статей и полезными материалами Hippo4j, вы можете подписаться на мой официальный аккаунт.
В процессе использования, если у вас возникли какие-либо вопросы или у вас есть предложения по проекту, вы можете подписаться на официальный аккаунт и отправить сообщение: "Добавить в группу", чтобы обсудить с более чем 1000 единомышленниками.
Глубокое понимание принципов
Даже если ваша компания не использует сценарии 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 за поддержку открытого сообщества.

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