02_SpringCloud客户端负载均衡Ribbon.md

时间:2023-01-23 04:41:47
【文件属性】:
文件名称:02_SpringCloud客户端负载均衡Ribbon.md
文件大小:5KB
文件格式:MD
更新时间:2023-01-23 04:41:47
ribbon 负载均衡 SpringCloud的复杂均衡 属于客户端;nginx辅助均衡属于服务器端 ,restTemplate 进行RPC调用.对外使用 rest http方式。DiscoveryClient 可以自己实现一个负载均衡的算法(使用请求总数 % 服务列表个数).算法文件跟新一下 @SpringBootApplication @EnableDiscoveryClient @RestController public class AppConsulClient { @Autowired private DiscoveryClient discoveryClient; @RequestMapping("/getServer") public String getServerInstance(){ List list = discoveryClient.getInstances("consul-order"); for (ServiceInstance serviceInstance : list) { if(serviceInstance !=null ){ return serviceInstance.getUri().toString()+"---"+serviceInstance.getServiceId(); } } return null; } @Resource private RestTemplate restTemplate; @RequestMapping("/disconverClient") public String getDiscoveryClient(){ //获取服务列表 String serverurl = getServerurl(); if(StringUtils.isEmpty(serverurl)){ return "请求列表为null"; } System.out.println("请求服务地址:"+serverurl); return restTemplate.getForObject(serverurl,String.class); } private Integer requestCount = 1; @RequestMapping("/getServerurl") public String getServerurl(){ List list = discoveryClient.getInstances("consul-order"); if(list == null && list.size() ==0){ return null; } //获取服务注册列表的个数 int size = list.size(); int index = requestCount % size; requestCount++; return list.get(index).getUri().toString(); } /** * @LoadBalanced 开启本地复杂均衡 * @return */ @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(AppConsulClient.class); } }

网友评论