一. Ribbon 介绍
Ribbon是一个客户端负载均衡器,它可以很好地控制HTTP和TCP客户端的行为。
二. 服务消费者的创建
2.1 新建一个服务消费者,consumer 加入pom文件
<dependencies>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.2 配置application.yml如下
server:port 是服务的启动端口,defaultZone: http://localhost:8761/eureka/ 我们让服务消费者注册到 Erueka Serve 上这样服务注册中心就可以获取我们的注册节点,然后在根据负载均衡策略动态获取注册中心的一个节点进行api的接口调用
server:
port: 9999
spring:
application:
name: smartsteps-consumer
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
2.3 Ribbon和Eureka Clinet配置
我们在Application 中通过@EnableEurekaClient 向Eureka Server 注册服务, Ribbon的配置只需要在
RestTemplate中注入@LoadBalanced 就可以实现负载功能
@SpringBootApplication
@EnableEurekaClient
public class ConsumerMain {
@Bean
@LoadBalanced
public RestTemplate restTemplate()
{
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerMain.class, args);
}
}
2.4 服务消费者的配置
新建一个java Controller文件 对外提供api接口服务,这里我们是通过Eureka Server 获取一台主机进行调用
@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getuser")
public String GetUser()
{
return restTemplate.getForObject("http://smartsteps-provider/api/v1/test",String.class);
}
}
2.5 Ribbon 负载均衡的测试
上一节,我们创建了一个provider 现在我们分别启动两个 provider server:port 分别为8888、8889
然后再启动一个consumer
这个时候我们在Eureka server 上发现已经有一个consumer 和两个provider 已经注册上上来了,下面我们进行调用测试。
测试url:http://localhost:9999/getuser 进行负载测试
第一次调用返回端口为8888
第一次调用返回端口为8889
好了,Ribbon的入门教程先到这里