Ribbon是一个独立的组件,是用来远程接口调用的。
基于《SpringCloud微服务架构(一)Eureka——注册与发现》创建服务“micro-web”
1、在bootstrap.properties中配置,将micro-web注册到Eureka
2、启动类中加入以下配置
@SpringBootApplication
// 开启Eureka客户端功能
@EnableEurekaClient
public class MicroWebApplication {
// 负载均衡
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(MicroWebApplication.class, args);
}
}
3、Controller代码
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/queryUser")
public String queryUser() {
return userService.queryContents();
}
}
4、重点看Service代码
4.1是根据服务名去调用的
public static String SERVIER_NAME = "micro-order";
4.2 通过getForObject方法可以调到 micro-order服务的queryUser接口。调用期间会存在负载均衡
5、再启动micro-order 为8099的端口(端口随意,多启动几个也可以)
访问一下,已经注册到Eureka
6、在 micro-web追加配置类
6.1 代码配置——
这个类不要出现在启动类的 @ComponentScan 扫面范围内,如果出现扫描访问,这个配置类就是每个服务共用的配置类了。
@Configuration
public class RibbonMicroOrderConfig {
private String name = "micro-order";
@Bean
@ConditionalOnClass
public IClientConfig defaultClientConfigImpl() {
DefaultClientConfigImpl config = new DefaultClientConfigImpl();
config.loadProperties(name);
config.set(CommonClientConfigKey.MaxAutoRetries,2);
config.set(CommonClientConfigKey.MaxAutoRetriesNextServer,2);
config.set(CommonClientConfigKey.ConnectTimeout,2000);
config.set(CommonClientConfigKey.ReadTimeout,4000);
config.set(CommonClientConfigKey.OkToRetryOnAllOperations,true);
return config;
}
// 这里选取“随机轮询”,还有“线性轮询”、“重试轮询”、“计算权重”
@Bean
public IRule ribbonRule() {
//线性轮训
new RoundRobinRule();
//可以重试的轮训
new RetryRule();
//根据运行情况来计算权重
new WeightedResponseTimeRule();
//过滤掉故障实例,选择请求数最小的实例
new BestAvailableRule();
//随机
return new RandomRule();
}
6.2 使用.properties 配置 TODO