ribbon简单介绍
1服务发现的任务由Eureka的客户端完成,服务消费的任务由Ribbon完成。
2Ribbon是一个基于HTTP和TCP的客户端负载均衡器,它可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到负载均衡的作用。
构建实例
准备工作
1启动服务注册中心Eureka-server和hello-serve服务。
通过java -jar 命令行的方式来启动两个不同端口的hello-serve。
java -jar hello-service.jar --server.port=8081
java -jar hello-service.jar --server.port=8082
2成功启动后,会在Eureka信息面板看到两个hello-serve的服务。
创建ribbon-consumer的spring-boot项目实现消费者
1创建pom.xml依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2创建应用主类ConusumerAppliction,通过@EnableDiscoueryclient注解让该应用注册为Eureka的客户端应用,获得服务发现的能力。创建RestTemplate的SpringBean实例,通过@LoadBalanced注解开启客户端负载均衡。
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
3创建ConsumerController累并实现/ribbon-consumer接口。
@RestController
public class ConsumerController {
@Autowired
RestTemplate restTemplate;
@RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
public String helloConsumer() {
return restTemplate.getForEntity("http://HELLO-SERVICE//hello",String.class).getBody();
}
}
4配置application.properties。
spring.application.name=ribbon-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:1110/eureka/
5自动ribbon-consumer。
6向http://localhost:9000/ribbon-consumer发起请求,返回“Hello World”。
7尝试多次请求,观察两个hello-serve的控制台,实现负载均衡效果。