Skip to content

bsm/accord

Repository files navigation

Accord

GoDoc Test License

Fast and efficient coordination of distributed processes. Server and client implementation in Go on top of the gRPC framework.

Use Case

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.

Architecture

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

Documentation

Please see the API documentation for package and API descriptions and examples.

Backends

  • 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!