Ribbon是一个负载均衡器,它可以让你对HTTP和TCP客户机的行为有很多的控制权。Feign已经使用了Ribbon,所以也可以使用@FeignClient 注解。先来看一下Ribbon。
1.建路由选择Ribbon
2.pom文件加入配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.配置yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8888/eureka/
server:
port: 9999
spring:
application:
name: service-ribbon
4.修改启动application中加上
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceribbonApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceribbonApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
加入HelloControler类
@RestController
public class HelloControler {
@Autowired
HelloService helloService;
@RequestMapping(value = "/hi")
public String hi(@RequestParam String name) {
return helloService.hiService(name);
}
}
加入HelloService
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;
public String hiService(String name) {
return restTemplate.getForObject("http://SERVICE-YUAN/hi?name="+name,String.class);
}
}
5.启动工程,再次访问 http://localhost:8888/ 可以看到心加入的SERVICE-RIBBON
6.访问ribbon,可以看到2个服务轮询
7.可以看到2个应用程序和一个Ribbon程序都在Rureka注册了,当我们对SERVICE-RIBBON发出的请求时会轮询2个应用,起到附在均衡的作用。这两个应用程序都在一台主机启动,通过配置文件配置不同的端口。Docker的service也有附在均衡的功能,后续研究如何结合Docker。