天天看点

SpringCloud学习日记(二)客户端负载均衡Ribbon

        上一篇介绍使用了Eureka服务注册与发现的组件使用,我们已经将服务提供者和服务消费者注册到EurekaServer上,但是在消费者调取服务者时,还是在使用硬编码的方式(指定ip和端口号)来使用的,这种方式使用起来不够灵活,而且需要变更服务提供者的时候需要手动修改相应的访问地址,而且我们配置多个服务提供方以后,如何实现对服务提供方随机访问呢,实现的办法比较多,比如在消费方和服务提供方加上nginx,实现负载均衡的能力,但是运维的工作势必会很复杂,而springcloud已经给我们准备好现成的解决方案了,那就是Ribbon,Ribbon本身也是netflex下的一个项目,并且支持多种负载策略,比如默认使用的轮训策略,以及随机策略,还有响应时间加权策略等。

        下面就来介绍一下ribbon在springcloud中的使用。根据官方文档,在springboot中使用ribbon有三种方式,第一种,按默认方式使用,只需在消费端的RestTemplate加上@LoadBalanced注解即可使用默认轮训策略对服务提供方进行访问,这是最简单的使用方式;第二种,通过编码方式来指定使用,可以指定轮训策略;第三种通过配置文件来使用,这三种方式的优先级为:三>二>一。

        在此以上一篇中的服务消费方为例进行使用Ribbon的改造,因为eureka的依赖中本身包含了ribbon的依赖,因此我们不需要额外导入ribbon的依赖了。

        由于文字表述不是太好说,可以直接下载我写的demo样例,

        编码方式使用:https://download.csdn.net/download/qq_35918388/10434288

        配置文件方式使用:https://download.csdn.net/download/qq_35918388/10434320

       需要注意的是,springboot在启动时会自动扫描同胞以及子包的注解类,因此在同一项目中如果要指定多种负载策略,并且是使用java代码配置使用的,那么需要排除掉那些指定的扫面包,否则,你配置使用的负载策略会覆盖掉整个工程,推荐使用配置文件的方式来进行配置使用,简单易用且可避免此问题的出现。

继续阅读