Springboot-微服务-微服务组件之服务管理-eureka-服务的高可用-ribbon
2021-07-21 02:55
标签:oca host org 就是 res discovery disco string ppi 关键要点 引入相关依赖 在restTemplate 添加@LoadBalanced//开启负载均衡注解 SpringBoot也帮我们提供了修改负载均衡规则的配置入口: 格式是: Springboot-微服务-微服务组件之服务管理-eureka-服务的高可用-ribbon 标签:oca host org 就是 res discovery disco string ppi 原文地址:https://www.cnblogs.com/caicai920/p/15024003.htmlSpringboot-微服务-微服务组件之服务管理-eureka-服务的高可用-ribbon
入门使用方式
引入依赖
在restTemplate 添加@LoadBalanced//开启负载均衡注解
package com.caicai;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableDiscoveryClient//开启eureka服务端的调用
@SpringBootApplication
public class ConsumerServiceApplication {
//Spring boot 调用的接口都是rest风格的接口,这里我们使用,Spring 自带的resTemplate 去调用,它包含了:http,post 等等
@Bean
@LoadBalanced//开启负载均衡注解
public RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerServiceApplication.class);
}
}
客户端根据服务名称进行调用
以下代码包含了多种方式,由繁琐到简单。ribbon有多种负载均衡算法,默认的是轮询
package com.caicai.Consumer.Control;
import com.caicai.Consumer.po.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@RestController
@RequestMapping("consumer")
public class ConsumerControl {
@Autowired
private RestTemplate restTemplate;
// @Autowired
// private DiscoveryClient discoveryClient; //这里的discoverclient 是Spring下面的discovercliet
//写死调用方式
// @GetMapping("{id}")
// public User queryById(@PathVariable("id") Long id)
// {
// String url = "http://localhost:8081/user/"+id;
// User user = restTemplate.getForObject(url,User.class);
// return user;
//
// }
//动态调用方式 五负载均衡的方式运行,比较low
// @GetMapping("{id}")
// public User queryById(@PathVariable("id") Long id)
// {
// //根据服务ID 获取实例
// List
ribbon 也提供可以修改轮询的方式,这个可以在官网上面能查的到
user-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
{服务名称}.ribbon.NFLoadBalancerRuleClassName
,值就是IRule的实现类。
文章标题:Springboot-微服务-微服务组件之服务管理-eureka-服务的高可用-ribbon
文章链接:http://soscw.com/index.php/essay/106786.html