📜  Cadence 印度采访 |设置 1(1)

📅  最后修改于: 2023-12-03 14:59:52.695000             🧑  作者: Mango

Cadence 印度采访 | 设置 1

在这篇文章中,我们将介绍 Cadence(卡登思)公司,这是一家基于云的服务公司,旨在提供可伸缩的分布式系统和工作流管理。我们将深入探讨 Cadence 的产品和服务,并向您展示如何使用 Cadence 的 API 构建可靠的分布式系统。

Cadence 简介

Cadence 由云计算领域的前 Google 工程师 Maxim Fateev 创立于 2017 年,总部位于美国加利福尼亚州圣何塞市。Cadence 的使命是简化分布式系统的构建和管理,它提供编排和协调负责复杂工作流的应用程序(应用程序中可能包含多个服务)。Cadence 的目标是为开发人员提供可横向扩展的工作流服务,而不必担心处理底层的复杂性。

Cadence 服务和产品

Cadence 为一些定期生产的业务提供了可靠的工作流服务,并且被认为是目前最好的基于云的工作流服务之一。

Cadence 服务包括以下组件:

  • Worker:提供了一种分布式的方式来执行工作流。
  • Server:负责管理和运行工作流服务。
  • Client:使开发人员能够创建和执行工作流。

Cadence 产品提供了丰富的功能,使开发人员能够简化工作流的构建和管理。以下是 Cadence 产品的一些核心功能:

  • 分布式任务调度
  • 再次尝试
  • 容错机制
  • 工作流版本控制
  • 活动和工作流监控
  • 以及更多...
Cadence API

Cadence API 提供了丰富的功能,可用于从代码构建可靠的分布式系统。以下是 Cadence 的一些基本组件和 API:

  • Workflow:一个步骤序列可以协作地执行。
  • Activity:单位操作,Workflow 可以调用 Activity。
  • Task Queue:Workflow 中从任务队列中获取工作流任务。
  • Worker:从 Task Queue 中获取并执行任务。
  • 客户端:Workflow 或 Activity 的实例。

以下是 Cadence API 样例代码,以获取执行 Workflow 和 Activity 作为示例:

import (
    "context"
    "fmt"

    "go.uber.org/cadence/activity"
    "go.uber.org/cadence/client"
    "go.uber.org/cadence/worker"
    "go.uber.org/cadence/workflow"
)

func helloWorldWorkflow(ctx workflow.Context, name string) (string, error) {
    // Executes helloActivity asynchronously.
    future := workflow.ExecuteActivity(ctx, helloActivity, name)
    // Waits for the result from helloActivity and returns it.
    var greeting string
    err := future.Get(ctx, &greeting)
    if err != nil {
        return "", err
    }
    return greeting, nil
}

func helloActivity(ctx context.Context, name string) (string, error) {
    // Greet and return the message.
    return fmt.Sprintf("Hello, %s!", name), nil
}

func executeWorkflow() {
    // Configure the client.
    service := client.NewClient(...)

    // Configure the worker.
    worker := worker.New(...)
    worker.RegisterWorkflow(helloWorldWorkflow)
    worker.RegisterActivity(helloActivity)

    // Start the worker, which will start polling for tasks on a task queue.
    worker.Start()

    // Execute the helloWorldWorkflow.
    workflowOptions := client.StartWorkflowOptions{
        TaskList: "helloWorldTaskList",
    }
    workflowRun, err := service.StartWorkflow(ctx, workflowOptions, helloWorldWorkflow, "Cadence")
    if err != nil {
        panic(err)
    }

    // Wait for the workflow to complete and print the result.
    var result string
    err = workflowRun.Get(ctx, &result)
    if err != nil {
        panic(err)
    }

    fmt.Println(result)
}
结论

Cadence 是一个功能强大的基于云的服务,旨在帮助开发人员构建可靠的分布式系统。它提供了丰富的工作流服务,使开发人员能够快速简化复杂的业务逻辑。在未来,我们相信 Cadence 将继续发展和发展,成为开发人员构建分布式系统的首选工具之一。