Skip to content
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite Enable mysql integration test with events v2 (#1690) Apr 10, 2019
.gen/go sql: replace wide rows with blobs (#1722) Apr 23, 2019
client Add check to ensure archival bucket exists (#1704) Apr 15, 2019
cmd Logging: replace with new logger in history/common and remove old log… Apr 21, 2019
common sql: allow dsn attrs to be specified via config (#1730) Apr 23, 2019
config Add public client to bootstrap params and remove from ringpop (#1702) Apr 13, 2019
docker Add ES integration test (#1703) Apr 16, 2019
environment Add ES integration test (#1703) Apr 16, 2019
host sql: replace wide rows with blobs (#1722) Apr 23, 2019
hostxdc Logging: replace with new logger in history/common and remove old log… Apr 21, 2019
idl/github.com/uber/cadence sql: replace wide rows with blobs (#1722) Apr 23, 2019
schema sql: allow dsn attrs to be specified via config (#1730) Apr 23, 2019
scripts/travis Update Kafka download link (#1612) Mar 27, 2019
service Refactor visibility to ElasticSearch (#1723) Apr 22, 2019
store add copyright header to all files (#183) May 15, 2017
tools Logging: replace with new logger in history/common and remove old log… Apr 21, 2019
.gitignore Implement Workflow Reset on Active Side (#1352) Jan 6, 2019
.gitmodules Remove internal git submodules (#9) Feb 24, 2017
.travis.yml Enable events v2 integration test (#1597) Apr 1, 2019
CONTRIBUTING.md Update contributing instruction for PR titles (#1393) Jan 16, 2019
Gopkg.lock Logging: replace with new logger in history/common and remove old log… Apr 21, 2019
Gopkg.toml Logging: replace with new logger in history/common and remove old log… Apr 21, 2019
LICENSE Readme (#10) Feb 24, 2017
Makefile sql: replace wide rows with blobs (#1722) Apr 23, 2019
README.md Update README.md (#1505) Mar 5, 2019
install-dep.sh Move from glide to dep (#1010) Aug 1, 2018

README.md

Cadence Build Status Coverage Status

Cadence is a distributed, scalable, durable, and highly available orchestration engine we developed at Uber Engineering to execute asynchronous long-running business logic in a scalable and resilient way.

Business logic is modeled as workflows and activities. Workflows are the implementation of coordination logic. Its sole purpose is to orchestrate activity executions. Activities are the implementation of a particular task in the business logic. The workflow and activity implementation are hosted and executed in worker processes. These workers long-poll the Cadence server for tasks, execute the tasks by invoking either a workflow or activity implementation, and return the results of the task back to the Cadence server. Furthermore, the workers can be implemented as completely stateless services which in turn allows for unlimited horizontal scaling.

The Cadence server brokers and persists tasks and events generated during workflow execution, which provides certain scalability and reliability guarantees for workflow executions. An individual activity execution is not fault tolerant as it can fail for various reasons. But the workflow that defines in which order and how (location, input parameters, timeouts, etc.) activities are executed is guaranteed to continue execution under various failure conditions.

This repo contains the source code of the Cadence server. To implement workflows, activities and worker use Go client or Java client.

See Maxim's talk at Data@Scale Conference for an architectural overview of Cadence.

Getting Started

Start the cadence-server locally

  • Build the required binaries following the instructions here.

  • Install and run cassandra locally:

# for OS X
brew install cassandra

# start cassandra
/usr/local/bin/cassandra
  • Setup the cassandra schema:
make install-schema
  • Start the service:
./cadence-server start

Using Docker

You can also build and run the service using Docker.

Run the Samples

Try out the sample recipes here to get started.

Use CLI

Try out Cadence command-line tool to perform various tasks on Cadence

Use Cadence Web

Try out Cadence Web UI to view your workflows on Cadence.
(This is already available at localhost:8080 if you run Cadence with docker compose)

Contributing

We'd love your help in making Cadence great. Please review our instructions.

License

MIT License, please see LICENSE for details.

You can’t perform that action at this time.