微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Uber Cadence生产设置

如何解决Uber Cadence生产设置

我当时正在寻找一个微服务协调器,遇到了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();
    

    还是我们应该在专用计算机上运行每个活动/工作流工作者?

  3. 在一台工人计算机上,我们可以为给定活动创建多少工人?例如,如果我们有活动HelloActivityImpl,是否应该在同一工作计算机上为其创建多个工作计算机?

  4. 我没有找到任何用于生产设置的文档。例如,如何在生产中安装和配置Cadence服务?有人可以为此指导我正确的材料,那就太好了。

  5. 在一些视频教程中,提到要实现高可用性,我们可以跨多个数据中心设置Cadence Service。如何为此配置Cadence服务?

解决方法

  1. 除非您需要对一组活动进行单独的流控制和速率限制,否则没有理由在每个工作进程中使用多个任务队列。

  2. 正如我在1中提到的,我会将您的代码重写为:

    client.on('messageReactionAdd',(reaction,user) => {
     if (user.bot) return;
    
     var roleName = reaction.emoji.name;
     console.log(roleName);
     var role = reaction.message.guild.roles.cache(
      (role) => role.name.toLowerCase() === roleName.toLowerCase()
     );
     var member = reaction.message.guild.members.find(
      (member) => member.id === user.id
     );
    
     if (member.roles.has(role.id)) {
      member
       .removeRole(role.id)
       .then((member) => {
        console.log(
         'Removed' + member.user.username + ' from the ' + role.name + ' role.'
        );
       })
       .catch((err) => console.error);
     } else {
      member
       .addRole(role.id)
       .then((member) => {
        console.log(
         'Added ' + member.user.username + ' to the ' + role.name + ' role.'
        );
       })
       .catch((err) => console.error);
     }
    });
    
  3. 没有理由为同一活动创建多个工人。

  4. 不确定Cadence。 Here is临时文档,展示了如何部署到Kubernetes。

  5. 此文档尚不可用。 Temporal的我们正在努力。

,

您还可以使用Cadence头盔图https://hub.helm.sh/charts/banzaicloud-stable/cadence

我正在与Cadence团队积极合作,以获取社区的操作文档。对于像我这样不想在K8上运行的人来说,它将很有用。我会等我们取得进展后再回来。

当前草稿版本:https://docs.google.com/document/d/1tQyLv2gEMDOjzFibKeuVYAA4fucjUFlxpojkOMAIwnA

将很快发布到cadence-docs。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。