Netflix makes use of Ribbon, which is in their terms a "client-side load-balancer". What are the use-cases and advantages of a client-side load-balancer compared to a traditional load-balancer? Is Ribbon, and other Netflix OSS services AWS -specific or can they be used in other contexts?
-
When Should a client use a load balancer? Here I am referring to Client as a Micro Service it self. Does it add any overhead on the microservice/client. – Tushar Banne Jun 23 '17 at 06:32
2 Answers
As already mentioned by using Ribbon you don't need an additional load balancer. You can also configure the balancing algorithm for each client differently, if you need to. At first I was a bit surprised also, but it does make a lot of sense.
Currently Spring Cloud, which uses Netflix OSS for most part, is independent of AWS.
I have made a small POC that you can check out here if want.

- 436
- 1
- 6
- 16
One reason for using client-side load balancer can be performance. With client side balancer you can directly contact desired service with one network hop (after initial discovery of course); with traditional load-balancer you need two hops - see my very unprofessional test.
Unfortunately I don't have that much experience with Netflix OOS, I just deduce from documentation that at least Spring Cloud Netflix can run also e.g. on Cloud Foundry.

- 4,675
- 2
- 29
- 47
-
1I concur. That additional hop injects latency into every over-the-wire invocation. That caused us trouble. You can easily saturate an ha-proxy server and thus require multiple proxies. Soon it becomes a dev-ops hassle. Other load balances such as the ELB are ideally meant as edge-proxies rather than middle-tier proxies. – sagneta Mar 03 '16 at 14:06