springcloud的负载均衡Ribbon入门
1.启用负载均衡
在Eureka中已经集成了Ribbon
@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }
2.修改调用方式
不再手动获取ip和端口,而是直接通过服务名称调用:
@Controller @RequestMapping("consumer/user") public class UserController { @Autowired private RestTemplate restTemplate; //@Autowired //private DiscoveryClient discoveryClient; // 注入discoveryClient,通过该客户端获取服务列表 @GetMapping @ResponseBody public User queryUserById(@RequestParam("id") Long id){ // 通过client获取服务提供方的服务列表,这里我们只有一个 // ServiceInstance instance = discoveryClient.getInstances("test-provider").get(0); String baseUrl = "http://test-provider/user/" + id; User user = this.restTemplate.getForObject(baseUrl, User.class); return user; } }
3.修改负载均衡配置
在application.yml中
server:
port: 80
spring:
application:
name: test-consumer
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8086/eureka
test-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
注意写法格式: