Puṣū is a distributed PubSub FoundationDB layer mimicking the Redis PubSub but adding a tenant isolation leveraged by the Biscuit authentication/authorisation token.
The Puṣū project is divided in multiple crates, each one with their own purpose:
- puṣū-server-lib : Handle the communication with the FoundationDB cluster
- puṣū-server : Listen to puṣū-client connections
- puṣū-client-lib : Programmatic client
- puṣū-client : CLI client
- puṣū-protocol : Describes the protocol between client and server
Each puṣū-server
of a same cluster shared the same FoundationDB as storage endpoint.
puṣū-server
are fully stateless components, they only hold a transient client session which can be relaunched
in an another puṣū-server
instance. This architecture allows a horizontal-scaling preventing any traffic bursts.
puṣū-server
instances are meant to be used behind a load-balancer.
puṣū-client
on its own, can be either some embedded library in another program, or the puṣū-client CLI.
puṣū-client
connects to any puṣū-server
and starts the communication using
the puṣū-protocol.
Puṣū is a distributed multi-tenant pub-sub client-server system. It means that you can have multiple times the same channel name but