#cadence-workflow #temporal-workflow
#каденция-рабочий процесс #темпорально-рабочий процесс #частота-рабочий процесс #темпоральный рабочий процесс
Вопрос:
Я искал оркестратор микросервисов и наткнулся на Uber Cadence. Я просмотрел документацию, а также использовал ее при настройке разработки.
У меня было несколько вопросов по производственным сценариям:
-
Рекомендуется ли иметь специальный список задач для рабочего процесса и различных используемых им действий? Или мы должны использовать единый список задач для всех? Влияет ли это решение на масштабируемость или производительность?
-
Когда мы добавляем новую рабочую машину, является ли обычной практикой запускать всех рабочих для разных действий / рабочих процессов на одной машине? Пример:
Worker.Factory factory = new Worker.Factory("samples-domain"); Worker helloWorkflowWorker = factory.newWorker("HelloWorkflowTaskList"); helloWorkflowWorker.registerWorkflowImplementationTypes(HelloWorkflowImpl.class); Worker helloActivityWorker = factory.newWorker("HelloActivityTaskList"); helloActivityWorker.registerActivitiesImplementations(new HelloActivityImpl()); Worker upperCaseActivityWorker = factory.newWorker("UpperCaseActivityTaskList"); upperCaseActivityWorker.registerActivitiesImplementations(new UpperCaseActivityImpl()); factory.start();
Или мы должны запускать каждого работника activity / workflow на выделенном компьютере?
-
Сколько работников в одной рабочей машине мы можем создать для данного вида деятельности? Например, если у нас есть activity HelloActivityImpl, должны ли мы создать для него несколько workers на одной рабочей машине?
-
Я не нашел никакой документации по настройке производства. Например, как установить и настроить службу каденции в рабочей среде? Будет здорово, если кто-нибудь сможет направить меня к нужному материалу для этого.
-
В некоторых видеоуроках упоминалось, что для обеспечения высокой доступности мы можем настроить службу каденции в нескольких центрах обработки данных. Как мне настроить службу каденции для этого?
Ответ №1:
-
Если вам не нужно иметь отдельный контроль потока и ограничение скорости для набора действий, нет причин использовать более одной очереди задач для каждого рабочего процесса.
-
Как я упоминал в 1, я бы переписал ваш код как:
Worker.Factory factory = new Worker.Factory("samples-domain"); Worker worker = factory.newWorker("HelloWorkflow"); worker.registerWorkflowImplementationTypes(HelloWorkflowImpl.class); worker.registerActivitiesImplementations(new HelloActivityImpl(), new UpperCaseActivityImpl()); factory.start();
-
Нет никаких причин создавать более одного работника для одного и того же действия.
-
Не уверен насчет Каденции. Вот временная документация, которая показывает, как выполнить развертывание в Kubernetes.
-
Эта документация пока недоступна. Мы в Temporal работаем над этим.
Комментарии:
1. Привет, Максим, большое тебе спасибо за ответы на все мои вопросы. У меня было несколько последующих вопросов, в основном о доступности. 1. Я понимаю, что в случае сбоя работника какой-либо другой работник может взять на себя управление и возобновить выполнение рабочего процесса. Что произойдет, если сервер Cadence выйдет из строя? Это единственная точка отказа или мы можем настроить несколько ее экземпляров в режиме master-slave? 2. Что касается перекрестной настройки DC для Temporal, есть ли какие-либо временные рамки, когда документация для этого будет доступна? Эта функция будет очень полезна для нас при развертывании производства.
2. Я думаю community.temporal.io это лучшее место для последующих вопросов.
Ответ №2:
Вы также можете использовать Cadence helmchart https://hub.helm.sh/charts/banzaicloud-stable/cadence
Я активно работаю с командой Cadence над созданием рабочей документации для сообщества. Это будет полезно для тех, кто не хочет работать на K8s, как я. Я вернусь позже, когда мы добьемся прогресса.
Текущая черновиковая версия:https://docs.google.com/document/d/1tQyLv2gEMDOjzFibKeuVYAA4fucjUFlxpojkOMAIwnA
скоро будет опубликовано в cadence-docs.