Orchestrate implements a microservices architecture composed of APIs and workers which communicate using a publish-subscribe pattern with Apache Kafka as a message broker.
Each API and worker can be configured using its own set of environment variables, and [global environment variables]. The Docker Compose file in the Orchestrate Quickstart provides an example of how to configure and execute the services.
Command line options are also available, and take precedence over environment variables.
- Orchestrate Gateway API manages chain data, smart contracts, identities, and the transaction workflow. It also exposes a proxy to the registered blockchain nodes, allowing users to use the standard Ethereum API.
- Tx-Sender crafts, signs, and sends transactions.
- Tx-Listener listens for transaction receipts.
- Key Manager exposes APIs to every cryptographic operation including communication with the selected key vault, such as HashiCorp Vault.
- Kafka message broker service enables communication between workers following a publish-subscribe pattern.
- Redis database service is used as distributed cache to store nonce values.
- Postgres database service stores transaction execution contexts.
- HashiCorp Vault for key management.