cadence

module
v1.2.13-prerelease11 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2024 License: MIT

README

Cadence

Build Status Coverage Slack Status

Github release License

GitHub stars GitHub forks

This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary.

You can implement your workflows with one of our client libraries. The Go and Java libraries are officially maintained by the Cadence team, while the Python and Ruby client libraries are developed by the community.

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

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
  • StackOverflow
    • Best for Q&A and general discusion
  • Github Issues
    • Best for reporting bugs and feature requests
  • Slack
    • Best for contributing/development discussion

Getting Started

Start the cadence-server

To run Cadence services locally, we highly recommend that you use Cadence service docker to run the service. You can also follow the instructions to build and run it.

Please visit our documentation site for production/cluster setup.

Run the Samples

Try out the sample recipes for Go or Java to get started.

Use 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.

Use Cadence Web

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)

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 and check if there are existing design discussions. Also peruse our design docs in case a feature has been designed but not yet implemented. Once you're sure the proposal is not covered elsewhere, please follow our proposal instructions.

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.

Stargazers 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 mock_client is a generated GoMock package.
Package mock_client 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.
rpc
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.
tools
cli
sql

Jump to

Keyboard shortcuts

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