Skip to content

jderusse/http-broadcast

Repository files navigation

HTTP Broadcast

A scalable and fault resilient HTTP Broadcaster built on top of mercure able to forward an HTTP request to several servers without the need to maintain a registry.

This project has been initialized in order to invalidate a cluster of docker varnish servers.

Description

Each HTTP request sent to a listening http-broadcast is pushed into a mercure HUB, then dispatched to all listening http-broadcast who'll replay the same request.

Schema

Use cases

Example of usage: Send PURGE/BAN requests to a cluster of Varnish containers.

The solution will be to embed a http-broadcast binary alongside each Varnish instance (One could use the Inter-container network communication provided by Kubernetes Pods). By sending a single request to one varnish container, the http-broadcast will take care to dispatch the same request to all varnish instances.

Benefits

  • No need to maintain an index: each server is allowed to start and die without to be registered somewhere
  • Fault tolerant: if a server is temporary unreachable (network issue for instance), messages won't be lost: all missed messages will be re-played once recovered.
  • Scalable: dealing with 1 or 2 000 servers is transparent for the client, it has a single request to perform.
  • Network secured: Servers don't have to be exposed to the client which is complex to set up when the servers are located in different region of the world.

Documentation

Contributing

See CONTRIBUTING.md.

About

A scalable and fault resilient HTTP Broadcaster

Resources

License

Stars

Watchers

Forks

Packages

No packages published