Можно ли реализовать динамический пул потоков Meituan без промежуточного программного обеспечения?

задняя часть Архитектура открытый источник
Можно ли реализовать динамический пул потоков Meituan без промежуточного программного обеспечения?

Зачем писать этот проект?

Всем привет, меня зовут Лунтай.

Статья о пуле потоков MeituanВо введении из-за того, что бизнес неправильно настроил параметры пула потоков, произошло несколько производственных аварий, что привело к ряду мыслей. Наконец, решил инкапсулировать динамическую настройку параметров пула потоков, расширить мониторинг пула потоков, оповещение о сообщениях и другие функции.

Я нашел много проектов с динамическим пулом потоков на платформе с открытым исходным кодом, но с точки зрения функциональности и надежности я лично считаю, что они не удовлетворяют приложения корпоративного уровня.

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

Я хотел дать проекту простое и легко запоминающееся имя, похожее на Eureka, Nacos, Redis, после обсуждения с друзьями решил назвать его в честь животного:Бегемот (Бегемот)

Бегемот на гитхабе:GitHub.com/Городской чат/Надеюсь, вы…

Я чувствую себя полезным, пожалуйста, нажмите звездочку за усердную работу, спасибо

Какую проблему он решает?

Пулы потоков следует использовать в бизнес-системах, чтобы помочь бизнес-процессам повысить эффективность и управлять потоками.Большинство сценариев применяются к большому количеству асинхронной обработки задач.

Хотя пул потоков предоставляет нам много удобств, он не идеален, например, следующие проблемы не могут быть решены хорошо

Если конфигурация пула потоков связана с вышеперечисленными проблемами, может потребоваться релиз бизнес-системы для ее решения; если после релиза параметры по-прежнему неразумны, продолжайте релиз...

Hippo очень хорошо решает эту проблему, он управляет всеми пулами потоков в бизнесе единым образом, при возникновении вышеперечисленных проблем параметры пула потоков могут быть заменены без перезагрузки системы.

Какие особенности у него есть?

Пулами потоков в прикладных системах управлять непросто. Ссылаясь на дизайн Meituan, Hippo разделен в соответствии с размерами арендаторов, проектов и пулов потоков. В сочетании с системными разрешениями, пусть разные разработчики и менеджеры несут ответственность за операции пула потоков в своих собственных системах.

Например, Xiaobian входит в группу общедоступных компонентов компании, и эта команда отвечает за такие проекты, как обмен сообщениями и шлюзы коротких ссылок. Общие компоненты — арендаторы, сообщения или короткие ссылки — элементы

модуль имя модуля Примечания
dynamic-threadpool-common общедоступный модуль -
dynamic-threadpool-config Центр конфигурации Обеспечивает функцию обновления пула потоков в квазиреальном времени.
dynamic-threadpool-console консоль Стыковка с front-end проектами
dynamic-threadpool-discovery Регистрационный центр Предоставляет такие функции, как регистрация экземпляра проекта пула потоков, обновление и автономный режим.
dynamic-threadpool-spring-boot-starter SpringBoot Starter -
dynamic-threadpool-example пример проекта -
dynamic-threadpool-server Сервер Компоненты интеграции с сервером
dynamic-threadpool-tools абстрактный класс инструментов Swagger, журнал операций и другие компоненты

В дополнение к динамическому изменению пула потоков, Hippo также включает в себя просмотр в режиме реального времени показателей времени выполнения пула потоков, оповещения о нагрузке и управление журналом конфигурации. Конкретные функции заключаются в следующем

Как запустить демо?

В настоящее время функция динамического пула потоков завершена, и код можно напрямую использовать для локального запуска. База данных в проекте построена автором ECS Docker, вы можете использовать ее напрямую

  1. запускатьdynamic-threadpool-serverКласс приложения ServerApplication под модулем
  2. запускатьdynamic-threadpool-exampleКласс приложения ExampleApplication под модулем

Измените конфигурацию в пуле потоков через интерфейс. HTTP POST-путь:http://localhost:6691/v1/cs/configs, тело запроса Body выглядит следующим образом:

{
    "ignore": "tenantId、itemId、tpId 代表唯一线程池,请不要修改",
    "tenantId": "prescription",
    "itemId": "dynamic-threadpool-example",
    "tpId": "message-produce",
    "coreSize": 10,
    "maxSize": 15,
    "queueType": 9,
    "capacity": 100,
    "keepAliveTime": 10,
    "rejectedType": 7,
    "isAlarm": 0,
    "capacityAlarm": 81,
    "livenessAlarm": 82
}

После успешного вызова интерфейса наблюдайте за выводом журнала консоли dynamic-threadpool-example.Если вывод журнала включает, но не ограничивается этой информацией, это успех.

[🔥 MESSAGE-PRODUCE] Changed thread pool. coreSize :: [11=>10], maxSize :: [15=>15], queueType :: [9=>9]
capacity :: [100=>100], keepAliveTime :: [10000=>10000], rejectedType :: [7=>7]

На данном этапе функция отправки сообщений Dingding была интегрирована, и она будет по-прежнему получать доступ к таким каналам уведомлений, как корпоративный WeChat, электронная почта, Feishu и SMS. Вы можете испытать отправку сообщений, добавив группу DingTalk, номер группы: 31764717.

Изменения конфигурации Уведомление о тревоге

Функция кода проекта все еще находится в стадии разработки, и первоначально планируется выпустить ВЫПУСК 1.0.0 для выполнения следующих функций. После развертывания службы сервера вам нужно только ввести компонент Starter в бизнес-систему, чтобы выполнить динамическую модификацию, мониторинг, оповещение и другие функции.

Что я могу получить от просмотра исходного кода?

Релизная версия еще не выпущена. Друзья могут прочитать исходный код фреймворка и проверить хорошие концепции дизайна или навыки кодирования в фреймворке.

В процессе разработки проекта для справки используется элегантный дизайн проектов промежуточного программного обеспечения, таких как Nacos, Eureka, Seata, ShardingSphere.

Итоги обзора

Редактор - программист с чистотой кода.Разработка кода в проекте полностью соответствует правилам кода Alibaba.Также рекомендуется всем использовать его и развивать хорошие привычки кодирования.

Маленький друг перед экраном, если вы считаете, что планирование функций проекта и дизайн кода неплохие, нажмите 🚀 Звезда, чтобы облегчить последующую проверку.

Если у вас есть другие взгляды на этот проект, добро пожаловать в поле для комментариев~