Ribbon简介
分布式系统中,各个微服务会部署多个实例,如何将服务消费者均匀分摊到多个服务提供者实例上,就要使用到负载均衡器
Ribbon 是负载均衡器 ,它提供了很多负载均衡算法,例如轮询、随即等,在配置服务提供者地址后,可以将服务消费者请求均匀的分发
参考:搭建注册中心
第一步:
在demo1(搭建服务提供者)基础上编写一个controller简单模拟一下服务提供者业务:
controller:如下
@RestController
public class TestController {
@GetMapping("/test/ok")
public Map test() {
Map map = new HashMap<>(16);
map.put("code", "ok90");
return map;
}
@GetMapping("/test4")
public String test2(@RequestParam(name = "param1") String param1) {
return param1;
}
@PostMapping("/test3")
public Integer test3(Integer id) {
return id;
}
@GetMapping("/test2")
public String test2() {
return "ok 90";
}
@GetMapping("/test-ribbon")
public String testRibbon() {
System.out.println("有新的请求 woshi 90");
return "success 90";
}
}
第二步:
复制一份项目 叫demo2 (controller里面返回结果改成对应启动端口方便看见调用哪个服务)启动端口8092
idea创建一个ribbon微服务项目:
1 application.yml配置文件:
server:
port: 8084
spring:
application:
name: ribbon-demo
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
2 pom文件:
4.0.0
com.gj
cloud-demo
0.0.1-SNAPSHOT
ribbon
0.0.1-SNAPSHOT
ribbon
SpringCloud组件之Ribbon
1.8
Greenwich.SR1
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
3 启动类添加注解@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class RibbonApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonApplication.class, args);
}
}
4 编写配置文件类RibbonConfig:
调用服务使用RestTemplate,负债均衡使用RandomRule随机
@Configuration
public class RibbonConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public IRule ribbonRandomRule() {
return new RandomRule();
}
}
5 编写Ribbon TestRibbonController
@RestController
public class TestRibbonController {
@Resource
private RestTemplate restTemplate;
@GetMapping("/test")
public String test() {
return restTemplate.getForObject("http://demo/test-ribbon", String.class);
}
}
6 启动注册中心 服务提供者demo1和demo2 服务消费者Ribbon
访问注册中心 localhost:8761 管理页面可以看见:
ribbon启动在8084端口,Demo服务提供者两个实例在8090和8092
访问localhost:8084/test 可以看见结果:调用90端口
刷新一次,调用的是92端口:
下一篇使用Ribbon实现自定义负债均衡,欢迎一起学习