cadence

module
v1.2.15-prerelease11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2025 License: MIT

README

Cadence

Build Status Coverage Slack Status Github release License

Cadence Workflow is an open-source platform since 2017 for building and running scalable, fault-tolerant, and long-running workflows. This repository contains the core orchestration engine and tools including CLI, schema managment, benchmark and canary.

Getting Started

Cadence backend consists of multiple services, a database (Cassandra/MySQL/PostgreSQL) and optionally Kafka+Elasticsearch. As a user, you need a worker which contains your workflow implementation. Once you have Cadence backend and worker(s) running, you can trigger workflows by using SDKs or via CLI.

  1. Start cadence backend components locally
docker-compose -f docker/docker-compose.yml up
  1. Run the Samples

Try out the sample recipes for Go or Java.

  1. Visit UI

Visit http://localhost:8080 to check workflow histories and detailed traces.

Client Libraries

You can implement your workflows with one of our client libraries:

You can also use iWF as a DSL framework on top of Cadence.

CLI

Cadence CLI can be used to operate workflows, tasklist, domain and even the clusters.

You can use the following ways to install Cadence CLI:

  • Use brew to install CLI: brew install cadence-workflow
    • Follow the instructions if you need to install older versions of CLI via homebrew. Usually this is only needed when you are running a server of a too old version.
  • Use docker image for CLI: docker run --rm ubercadence/cli:<releaseVersion> or docker run --rm ubercadence/cli:master . Be sure to update your image when you want to try new features: docker pull ubercadence/cli:master
  • Build the CLI binary yourself, check out the repo and run make cadence to build all tools. See CONTRIBUTING for prerequisite of make command.
  • Build the CLI image yourself, see instructions

Cadence CLI is a powerful tool. The commands are organized by tabs. E.g. workflow->batch->start, or admin->workflow->describe.

Please read the documentation and always try out --help on any tab to learn & explore.

UI

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

Other binaries in this repo
Bench/stress test workflow tools

See bench documentation.

Periodical feature health check workflow tools(aka Canary)

See canary documentation.

Schema tools for SQL and Cassandra

The tools are for manual setup or upgrading database schema

The easiest way to get the schema tool is via homebrew.

brew install cadence-workflow also includes cadence-sql-tool and cadence-cassandra-tool.

  • The schema files are located at /usr/local/etc/cadence/schema/.
  • To upgrade, make sure you remove the old ElasticSearch schema first: mv /usr/local/etc/cadence/schema/elasticsearch /usr/local/etc/cadence/schema/elasticsearch.old && brew upgrade cadence-workflow. Otherwise ElasticSearch schemas may not be able to get updated.
  • Follow the instructions if you need to install older versions of schema tools via homebrew. However, easier way is to use new versions of schema tools with old versions of schemas. All you need is to check out the older version of schemas from this repo. Run git checkout v0.21.3 to get the v0.21.3 schemas in the schema folder.

Contributing

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

If you'd like to propose a new feature, first join the Slack channel to start a discussion.

Please visit our documentation site for production/cluster setup.

Learning Resources

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

Visit cadenceworkflow.io to learn more about Cadence. Join us in Cadence Documentation project. Feel free to raise an Issue or Pull Request there.

Community
  • Github Discussion
    • Best for Q&A, support/help, general discusion, and annoucement
  • Github Issues
    • Best for reporting bugs and feature requests
  • StackOverflow
    • Best for Q&A and general discusion
  • Slack
    • Best for contributing/development discussion

Stars over time

Stargazers over time

License

MIT License, please see LICENSE for details.

Directories

Path Synopsis
lib
Package client is a generated GoMock package.
Package client is a generated GoMock package.
admin
Package admin is a generated GoMock package.
Package admin is a generated GoMock package.
frontend
Package frontend is a generated GoMock package.
Package frontend is a generated GoMock package.
history
Package history is a generated GoMock package.
Package history is a generated GoMock package.
matching
Package matching is a generated GoMock package.
Package matching is a generated GoMock package.
cmd
server Module
Package common is a generated GoMock package.
Package common is a generated GoMock package.
archiver
Package archiver is a generated GoMock package.
Package archiver is a generated GoMock package.
archiver/filestore
Package filestore is a generated GoMock package.
Package filestore is a generated GoMock package.
archiver/s3store
Package s3store is a generated GoMock package.
Package s3store is a generated GoMock package.
asyncworkflow/queue
Package queue is a generated GoMock package.
Package queue is a generated GoMock package.
asyncworkflow/queue/provider
Package provider is a generated GoMock package.
Package provider is a generated GoMock package.
asyncworkflow/queueconfigapi
Package queueconfigapi is a generated GoMock package.
Package queueconfigapi is a generated GoMock package.
authorization
Package authorization is a generated GoMock package.
Package authorization is a generated GoMock package.
client
Package client is a generated GoMock package.
Package client is a generated GoMock package.
codec
Package codec is a generated GoMock package.
Package codec is a generated GoMock package.
domain
Package domain is a generated GoMock package.
Package domain is a generated GoMock package.
dynamicconfig
Package dynamicconfig is a generated GoMock package.
Package dynamicconfig is a generated GoMock package.
dynamicconfig/configstore
Package configstore is a generated GoMock package.
Package configstore is a generated GoMock package.
isolationgroup
Package isolationgroup is a generated GoMock package.
Package isolationgroup is a generated GoMock package.
isolationgroup/isolationgroupapi
Package isolationgroupapi is a generated GoMock package.
Package isolationgroupapi is a generated GoMock package.
log
mapq/types
Package types is a generated GoMock package.
Package types is a generated GoMock package.
membership
Package membership is a generated GoMock package.
Package membership is a generated GoMock package.
messaging
Package messaging is a generated GoMock package.
Package messaging is a generated GoMock package.
ndc
Package ndc is a generated GoMock package.
Package ndc is a generated GoMock package.
pagination
Package pagination is a generated GoMock package.
Package pagination is a generated GoMock package.
partition
Package partition is a generated GoMock package.
Package partition is a generated GoMock package.
persistence
Package persistence is a generated GoMock package.
Package persistence is a generated GoMock package.
persistence/client
Package client is a generated GoMock package.
Package client is a generated GoMock package.
persistence/nosql
Package nosql is a generated GoMock package.
Package nosql is a generated GoMock package.
persistence/nosql/nosqlplugin
Package nosqlplugin is a generated GoMock package.
Package nosqlplugin is a generated GoMock package.
persistence/nosql/nosqlplugin/cassandra/gocql
Package gocql is a generated GoMock package.
Package gocql is a generated GoMock package.
persistence/serialization
Package serialization is a generated GoMock package.
Package serialization is a generated GoMock package.
persistence/sql/sqldriver
Package sqldriver is a generated GoMock package.
Package sqldriver is a generated GoMock package.
persistence/sql/sqlplugin
Package sqlplugin is a generated GoMock package.
Package sqlplugin is a generated GoMock package.
pinot
Package pinot is a generated GoMock package.
Package pinot is a generated GoMock package.
quotas
Package quotas is a generated GoMock package.
Package quotas is a generated GoMock package.
quotas/global
Package global contains a global-load-balance-aware ratelimiter (when complete).
Package global contains a global-load-balance-aware ratelimiter (when complete).
quotas/global/algorithm
Package algorithm contains a running-weighted-average calculator for ratelimits, and some associated types to prevent accidental confusion between the various floats/ints/etc involved.
Package algorithm contains a running-weighted-average calculator for ratelimits, and some associated types to prevent accidental confusion between the various floats/ints/etc involved.
quotas/global/collection
Package collection contains the limiting-host ratelimit usage tracking and enforcing logic, which acts as a quotas.Collection.
Package collection contains the limiting-host ratelimit usage tracking and enforcing logic, which acts as a quotas.Collection.
quotas/global/collection/internal
Package internal protects these types' concurrency primitives and other internals from accidental misuse.
Package internal protects these types' concurrency primitives and other internals from accidental misuse.
quotas/global/rpc
Package rpc contains a concurrent RPC client, and handles mapping to/from the Any-typed request details so other packages do not have to concern themselves with those details.
Package rpc contains a concurrent RPC client, and handles mapping to/from the Any-typed request details so other packages do not have to concern themselves with those details.
quotas/global/shared
Package shared holds some types that are used between multiple global-ratelimiter packages, and need to be broken out to prevent import cycles.
Package shared holds some types that are used between multiple global-ratelimiter packages, and need to be broken out to prevent import cycles.
reconciliation/invariant
Package invariant is a generated GoMock package.
Package invariant is a generated GoMock package.
reconciliation/store
Package store is a generated GoMock package.
Package store is a generated GoMock package.
resource
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
rpc
Package rpc is a generated GoMock package.
Package rpc is a generated GoMock package.
stats
Package stats is a generated GoMock package.
Package stats is a generated GoMock package.
task
Package task is a generated GoMock package.
Package task is a generated GoMock package.
taskvalidator
Package taskvalidator provides a Work in Progress service for workflow validations.
Package taskvalidator provides a Work in Progress service for workflow validations.
ndc
schema
service
frontend/admin
Package admin is a generated GoMock package.
Package admin is a generated GoMock package.
frontend/api
Package api is a generated GoMock package.
Package api is a generated GoMock package.
history/engine
Package engine is a generated GoMock package.
Package engine is a generated GoMock package.
history/events
Package events is a generated GoMock package.
Package events is a generated GoMock package.
history/execution
Package execution is a generated GoMock package.
Package execution is a generated GoMock package.
history/failover
Package failover is a generated GoMock package.
Package failover is a generated GoMock package.
history/handler
Package handler is a generated GoMock package.
Package handler is a generated GoMock package.
history/ndc
Package ndc is a generated GoMock package.
Package ndc is a generated GoMock package.
history/query
Package query is a generated GoMock package.
Package query is a generated GoMock package.
history/queue
Package queue is a generated GoMock package.
Package queue is a generated GoMock package.
history/replication
Package replication is a generated GoMock package.
Package replication is a generated GoMock package.
history/reset
Package reset is a generated GoMock package.
Package reset is a generated GoMock package.
history/resource
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
history/shard
Package shard is a generated GoMock package.
Package shard is a generated GoMock package.
history/task
Package task is a generated GoMock package.
Package task is a generated GoMock package.
history/workflowcache
Package workflowcache is a generated GoMock package.
Package workflowcache is a generated GoMock package.
matching/handler
Package handler is a generated GoMock package.
Package handler is a generated GoMock package.
matching/tasklist
Package tasklist is a generated GoMock package.
Package tasklist is a generated GoMock package.
sharddistributor/handler
Package handler is a generated GoMock package.
Package handler is a generated GoMock package.
worker/indexer
Package indexer is a generated GoMock package.
Package indexer is a generated GoMock package.
worker/worker
Package worker is a generated GoMock package.
Package worker is a generated GoMock package.
tools
cli
Package cli is a generated GoMock package.
Package cli is a generated GoMock package.
common/schema
Package schema is a generated GoMock package.
Package schema is a generated GoMock package.
sql

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL