Ribbon
我们首先对Ribbon 进行一个介绍。
Spring Cloud Ribbon 是一个基于 HTTP 和 TCP的客户端负载均衡工具, 它不同于Nginx的服务端负载均衡,他侧重于将需要的访问清单从服务注册中心中取出,放在自己的访问服务器列表(ServerList)中,当需要访问某一台具体的服务器的时候,他会经过不同的轮询策略去访问相应的负载均衡设备。Ribbon适合于日访问量并不高的系统中。
同时他也不同于硬件设施的负载均衡,硬件设施经常通过配置citrix netscaler, 负载均衡路由器,或者实现可循环的DNS 从而实现轮询算法,分配流量给各个节点。软件端的负载均衡,包括Nginx或者Ribbon,他们通过用代码实现轮询算法的策略,从而实现小规模的任务分配,软件的负载均衡具有可重用,费用低和易维护等特点,当然,他的缺点也很明显,只能实现小规模的负载均衡,换句话说只能小打小闹,而不能对性能做一个跨越性的提升。
Ribbon 在Spring Cloud中的使用
Ribbon在Spring Cloud 可以通过@LoadBalanced 服务端接口,实现客户端的负载均衡,当客户端发起对服务端的请求访问的时候,可以通过Ribbon的负载均衡,选择不那么繁忙的服务器去进行请求处理。
LoadBalaced注解采用了RestTemplate 的服务访问模式,因为是RestTemplate,所以它可以选择返回是Response 对象,还是一个已经被申明属性的对象,或者直接是一个URI。RestTemplate 有四种常用访问方法,get,post,