一、什么是ribbon
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
二、修改80服务
1.修改pom文件
添加eureka、ribbon依赖
<!--eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--ribbon依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2.修改yml文件
将80服务加入到eureka注册中心
#eureka配置
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002:/eureka
#表示是否将自己注册进EurekaServer默认为true。
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
instance:
#主机名称:服务名称修改
instance-id: cloud-dept80
#访问路径可以显示IP地址
prefer-ip-address: true
3.修改RestConfig添加注解
@LoadBalanced
@Configuration
public class RestConfig {
@Bean
@LoadBalanced //负载
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
4.修改主启动类
@SpringBootApplication
@EnableEurekaClient
public class DeptConsumer80_App {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer80_App.class,args);
}
}
5.修改controller类
@RestController
public class DeptController {
不在采用ip地址的方式访问,而是通过eureka的注册名称来进行访问
// public static final String REST_URL_PREFIX = "http://localhost:8001";
public static final String REST_URL_PREFIX = "http://CLOUD-DEPT";
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getById/{id}")
public Dept getById(@PathVariable Long id){
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/getById/"+id,Dept.class);
}
@GetMapping("/getAll")
public List<Dept> getById(){
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/getAll",List.class);
}
@PostMapping("/addDepy")
public boolean getById(@RequestBody Dept dept){
return restTemplate.postForObject(REST_URL_PREFIX+"/dept/addDept",dept,boolean.class);
}
}
三、如何测试
1.复制8001服务 8002,8003
2.启动eureka集群7001,7002,7003,启动8001,8002,8003服务,最后启动80服务
3.访问80服务,默认或轮询请求8001,8002,8003