Настройка производительности Uber Cadence

#cadence-workflow #temporal-workflow

#каденция-рабочий процесс #темпорально-рабочий процесс #частота-рабочий процесс #темпоральный рабочий процесс

Вопрос:

Я искал оркестратор микросервисов и наткнулся на Uber Cadence. Я просмотрел документацию, а также использовал ее при настройке разработки.

У меня было несколько вопросов по производственным сценариям:

  1. Рекомендуется ли иметь специальный список задач для рабочего процесса и различных используемых им действий? Или мы должны использовать единый список задач для всех? Влияет ли это решение на масштабируемость или производительность?

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

     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 на выделенном компьютере?

  3. Сколько работников в одной рабочей машине мы можем создать для данного вида деятельности? Например, если у нас есть activity HelloActivityImpl, должны ли мы создать для него несколько workers на одной рабочей машине?

  4. Я не нашел никакой документации по настройке производства. Например, как установить и настроить службу каденции в рабочей среде? Будет здорово, если кто-нибудь сможет направить меня к нужному материалу для этого.

  5. В некоторых видеоуроках упоминалось, что для обеспечения высокой доступности мы можем настроить службу каденции в нескольких центрах обработки данных. Как мне настроить службу каденции для этого?

Ответ №1:

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

  2. Как я упоминал в 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();
      
  3. Нет никаких причин создавать более одного работника для одного и того же действия.

  4. Не уверен насчет Каденции. Вот временная документация, которая показывает, как выполнить развертывание в Kubernetes.

  5. Эта документация пока недоступна. Мы в 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.