Я вижу общий шаблон для служб, которые мы пытаемся разработать, и мне интересно, есть ли там инструменты/библиотеки, которые помогут здесь. Хотя задания по умолчанию, описанные в литературе по микросервисам, относятся к природе REQUEST → RESPONSE, наши задания - это более или менее задание полупостоянных задач.
Примеры таких задач
- Прослушивание очереди сообщений для данных из источников X и Y, корреляция данных, которые поступают и хранятся в Z.
- Храните буфер памяти в памяти, который вычисляет текущее среднее за последние 15 минут данных каждый раз, когда появляется новая запись данных.
В настоящее время наши службы написаны на PHP. Из-за предполагаемых издержек процессов PHP и соединений с очередью сообщений мы хотели бы, чтобы один сервисный процесс обрабатывал несколько этих заданий одновременно.
График, который, мы надеемся, иллюстрирует настройку, которую мы имеем в нашей голове:
- Служащие службы в настоящее время дезамонизированы PHP-скрипты
- Для реестра служб мы смотрим на Zookeeper
В то время как Zookeeper (и куратор) выполняет балансировку нагрузки, я ничего не обнаружил в распределении постоянных заданий (которые можно обновлять, удалять и переназначать, когда рабочий умирает)
Предлагаемые обязанности менеджера заданий
- Знает о работе
- Знает об услугах, которые могут выполнять эти задания.
- Может назначать задания для служб
- Может отправлять обновления задания в службы
- Можно переназначить задания, если работник умирает
Существуют ли какие-либо библиотеки/инструменты, которые могут решать такие проблемы, и могут ли они функционировать в качестве менеджера заданий? Или это все один большой анти-шаблон, и мы должны сделать это по-другому?