Allows to distribute incoming requests to multiple nodes, either by using a reverse proxy or by redirecting the client.
var workers = LoadBalancer.Create() .Proxy("http://worker-1") .Proxy("http://worker-2"); var cdn = LoadBalancer.Create() .Redirect("https://cdn1.domain.com") .Redirect("https://cdn2.domain.com"); var app = Layout.Create() .Add("api", workers) .Add("content", cdn);
If needed, the incoming request can get analyzed to determine the nodes with the highest priority that should handle the request (e.g. to prefer nodes near to the requesting client).
LoadBalancer.Create().Proxy(..., (r) => Priority.High);
Additionally, the builder accepts any
IHandler instance as a node, allowing
to extend the functionality where needed. For example, the following snippet would
distribute the load to two different, local drives.
LoadBalancer.Create() .Add(Resources.From(ResourceTree.FromDirectory("/mnt/storage1/files/"))) .Add(Resources.From(ResourceTree.FromDirectory("/mnt/storage2/files/")));