Note to bush up system design basics#4 - Load Balancer
DNS Round Robin: can't guarantee availability, not responsive since DNS cache needs TTL to expire.
L3/L4 LB: routing by IP address(L3) and TCP port(L4). Simple, less computing resource (affordable)
*L7 LB: routing by content inside HTTP protocol: knowing distributing-by-requests ≠ distributing-by-load may leads to better load balancing.
Suggest algorithms: round robin, weighted round robin, least loaded, least loaded with slow start, least latency, cascade, utilization limit, etc. (In addition, in a multiple-leader replication / multiple datacenter env, make sure user_Id is always accessing the same datacenter is the easiest way to prevent concurrency and write competing problem).
Discuss benefits: prevent overloading, eliminate single points of failure, SSL termination (decrypt and encrypt) so backend servers don't perform expensive operations, provide session persistence for stateless web service.
Discuss reverse proxy if the scaling requirement is relatively low, which provides: caching, and increased security, compression, SSL termination, static content, etc.
Note to bush up system design basics#4 - Load Balancer
DNS Round Robin: can't guarantee availability, not responsive since DNS cache needs TTL to expire. L3/L4 LB: routing by IP address(L3) and TCP port(L4). Simple, less computing resource (affordable) *L7 LB: routing by content inside HTTP protocol: knowing distributing-by-requests ≠ distributing-by-load may leads to better load balancing.
Suggest algorithms: round robin, weighted round robin, least loaded, least loaded with slow start, least latency, cascade, utilization limit, etc. (In addition, in a multiple-leader replication / multiple datacenter env, make sure user_Id is always accessing the same datacenter is the easiest way to prevent concurrency and write competing problem).
Discuss benefits: prevent overloading, eliminate single points of failure, SSL termination (decrypt and encrypt) so backend servers don't perform expensive operations, provide session persistence for stateless web service.
Discuss reverse proxy if the scaling requirement is relatively low, which provides: caching, and increased security, compression, SSL termination, static content, etc.
https://tianpan.co/notes/182-designing-l7-load-balancer https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/
┆Issue is synchronized with this Trello card by Unito ┆Attachments: https://tianpan.co/notes/182-designing-l7-load-balancer | https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/ | Enhancing Bandaid load balancing at Dropbox by leveraging real-time backend server load information | choice-of-2 and other approaches for load balancing @ Netflix