Uber Cadence 生产设置
Uber Cadence production setup
我在寻找微服务编排器,偶然发现了 Uber Cadence。我已经阅读了文档并在开发设置中使用了它。
我有几个关于生产场景的问题:
是否建议为工作流及其使用的不同活动设置专门的任务列表?或者,我们应该为所有人使用一个任务列表吗?此决定会影响可伸缩性或性能吗?
当我们添加一台新的 worker 机器时,通常的做法是 运行 所有 worker 用于同一台机器中的不同 activities/workflows?示例:
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 工人在专用机器上?
在单个 worker 机器中,我们可以为给定的 activity 创建多少个 worker?例如,如果我们有 activity HelloActivityImpl,我们是否应该在同一个 worker 机器上为它创建多个 worker?
我没有找到任何生产设置文档。例如,如何在生产中安装和配置 Cadence 服务?如果有人可以为此将我引导至右侧 material,那就太好了。
在一些视频教程中提到,为了高可用性,我们可以跨多个数据中心设置 Cadence 服务。如何为此配置 Cadence 服务?
除非您需要对一组活动进行单独的流量控制和速率限制,否则没有理由为每个工作进程使用多个任务队列。
正如我在 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();
没有理由为同一个activity创建多个工人。
不确定 Cadence。 Here is 显示如何部署到 Kubernetes 的 Temporal 文档。
此文档尚不可用。我们 Temporal 正在努力。
你也可以使用 Cadence helmchart https://hub.helm.sh/charts/banzaicloud-stable/cadence
我正在积极与 Cadence 团队合作,为社区提供操作文档。对于像我这样不想在 K8s 上 运行 的人来说,这将很有用。我会在我们取得进展后回来。
当前草稿版本:https://docs.google.com/document/d/1tQyLv2gEMDOjzFibKeuVYAA4fucjUFlxpojkOMAIwnA
即将发布到 cadence-docs。
我在寻找微服务编排器,偶然发现了 Uber Cadence。我已经阅读了文档并在开发设置中使用了它。
我有几个关于生产场景的问题:
是否建议为工作流及其使用的不同活动设置专门的任务列表?或者,我们应该为所有人使用一个任务列表吗?此决定会影响可伸缩性或性能吗?
当我们添加一台新的 worker 机器时,通常的做法是 运行 所有 worker 用于同一台机器中的不同 activities/workflows?示例:
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 工人在专用机器上?
在单个 worker 机器中,我们可以为给定的 activity 创建多少个 worker?例如,如果我们有 activity HelloActivityImpl,我们是否应该在同一个 worker 机器上为它创建多个 worker?
我没有找到任何生产设置文档。例如,如何在生产中安装和配置 Cadence 服务?如果有人可以为此将我引导至右侧 material,那就太好了。
在一些视频教程中提到,为了高可用性,我们可以跨多个数据中心设置 Cadence 服务。如何为此配置 Cadence 服务?
除非您需要对一组活动进行单独的流量控制和速率限制,否则没有理由为每个工作进程使用多个任务队列。
正如我在 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();
没有理由为同一个activity创建多个工人。
不确定 Cadence。 Here is 显示如何部署到 Kubernetes 的 Temporal 文档。
此文档尚不可用。我们 Temporal 正在努力。
你也可以使用 Cadence helmchart https://hub.helm.sh/charts/banzaicloud-stable/cadence
我正在积极与 Cadence 团队合作,为社区提供操作文档。对于像我这样不想在 K8s 上 运行 的人来说,这将很有用。我会在我们取得进展后回来。
当前草稿版本:https://docs.google.com/document/d/1tQyLv2gEMDOjzFibKeuVYAA4fucjUFlxpojkOMAIwnA
即将发布到 cadence-docs。