Fast and efficient coordination of distributed processes. Server and client implementation in Go on top of the gRPC framework.
Imagine you are processing files within a directory or bucket, you would want to coordinate your workers to pick a file each, lock it for the duration of the processing and then mark it as done once finished so it's not picked up by another worker again.
+------------+ +------------+ +--------------+
| | | | | |
| WORKER | -gRPC-> | SERVER | --> | BACKEND |
| Client | <------ | | <-- | PostgreSQL |
| | | | | |
+------------+ +------------+ +--------------+
- Clients are connected to (a cluster of) Accord Servers and communicate via gRPC.
- Servers are using a pluggable backend (currently, PostgreSQL only) to coordinate state.
- Clients maintain a local state cache to avoid hammering the server/backends.
Please see the API documentation for package and API descriptions and examples.
- PostgreSQL - requires version >= 9.5.
- Mock - in-memory backend, for testing only.
- Direct - direct allows to connect clients directy a backend, bypassing the server. Use at your own risk!