当前位置: 首页 > news >正文

springcloud学习第三篇

一、客户端负载均衡组件Ribbon

1.添加依赖

<!-- 添加ribbon 依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

2.添加配置类

@Configuration
public class MyConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}

3.使用

@RestController
public class Controller {@Autowiredprivate RestTemplate restTemplate;public string function() {ResponseEntity responseEntity = restTemplate.getForEntity("http://service-name/other/interface");}
}

4.常见负载均衡策略

默认轮询

4.1.随机

@Configuration
public class MyConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}/*** 随机算法的负载均衡* @return 结果*/@Beanpublic IRule MyRule(){return new RandomRule();}
}

4.2.自定义

import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.Server;
import java.util.List;
import java.util.Random;public class CustomRule extends AbstractLoadBalancerRule {@Overridepublic Server choose(Object key) {// 获取所有可达的服务实例List<Server> reachableServers = getLoadBalancer().getReachableServers();if (reachableServers.isEmpty()) {return null;}// 示例:自定义过滤逻辑 - 只选择端口为 8081 的实例List<Server> filteredServers = reachableServers.stream().filter(server -> server.getPort() == 8081).collect(Collectors.toList());if (filteredServers.isEmpty()) {// 回退到随机选择return new Random().nextInt(reachableServers.size());}// 从过滤后的列表中选择return filteredServers.get(new Random().nextInt(filteredServers.size()));}
}

5.缺点

参数需要拼接到url上面

二、客户端负载均衡组件Feign

1.添加依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.开启openFeign

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients(basePackages = "com.jhk")
public class AppUserApplication {public static void main(String[] args) {SpringApplication.run(AppUserApplication.class, args);}
}

3.使用

// 调用其他服务
@FeignClient(name="service-name")
public interface serviceApi{@RequestMapping("/getData")String getData();
}

三、Feign源码

EnableFeignClients
org.springframework.cloud.openfeign.EnableFeignClients>org.springframework.cloud.openfeign.FeignClientsRegistrar # @Import({FeignClientsRegistrar.class}) 通过import注解方式加载FeignClientsRegistrar到容器>org.springframework.cloud.openfeign.FeignClientsRegistrar#registerBeanDefinitions # 将Bean 注册到 FeignClientsRegistrar>org.springframework.cloud.openfeign.FeignClientsRegistrar#registerFeignClients>org.springframework.cloud.openfeign.FeignClientsRegistrar#registerClientConfiguration # 扫描EnableFeignClients标签中的配置信息并注册>org.springframework.cloud.openfeign.FeignClientsRegistrar#registerFeignClient # 扫描所有@FeignClient注解的类注入spring容器>org.springframework.cloud.openfeign.FeignClientFactoryBean # 接口的代理Bean>org.springframework.cloud.openfeign.FeignClientFactoryBean#getObject>org.springframework.cloud.openfeign.FeignClientFactoryBean#getTarget>org.springframework.cloud.openfeign.FeignClientFactoryBean#loadBalance # 如果feignClient中没有url属性,会调用loadBalance完成自动负载调用>org.springframework.beans.factory.support.BeanDefinitionBuilder#genericBeanDefinition(java.lang.Class<?>) # 创建每个feignClient接口的代理Bean>org.springframework.beans.factory.support.BeanDefinitionReaderUtils#registerBeanDefinition # 注册到bena容器中

本文来自博客园,作者:TheLifelongLearner,转载请注明原文链接:https://www.cnblogs.com/The-Lifelong-Learner/p/20490144

http://www.jsqmd.com/news/1001962/

相关文章:

  • 一文读懂AI智能体:知识库如何支撑售前售后全场景服务
  • 2026杭州小程序开发公司排名:商城、预约、会员、门店十大场景服务商评测
  • 2026有实力的无锡产业园景观绿化设计施工公司口碑推荐 - 品牌排行榜
  • 为什么 90% 企业选玖叁鹿做豆包 GEO 优化?2026 年 10 家头部服务商实力大比拼 - 玖叁鹿
  • 2026年豆包AI排名优化服务商深度评测:玖叁鹿GEO领衔,10家主流机构实力解析 - 玖叁鹿
  • 2026年当下人工湖荷花苗费用解析与市场优选服务商盘点 - 品牌鉴赏官2026
  • 从调制星座图到误码率:手把手用Python仿真ASK/FSK/PSK,直观理解SNR与BER的关系
  • 2026上海蒙特梭利早教:科学启蒙与能力培养新路径 - 品牌排行榜
  • 2026苏州调查服务公司推荐及行业选择指南 - 品牌排行榜
  • E-Hentai下载器终极教程:免费批量下载漫画的完整指南
  • 家的排插和公牛排插哪个好?2026年实用对比分析 - 品牌排行榜
  • 苏州诚信的相城装修公司排行2026年口碑推荐 - 品牌排行榜
  • C/C++ 数据结构(一)基础概念、线性表链表
  • 2026年工业电源供应商怎么选?从明纬、台达到本土技术服务商的实战分析 - 优质品牌商家
  • 2026年铝皮厂家口碑观察:从防腐保温到建筑幕墙,这些企业值得关注 - 优质品牌商家
  • 2026年消费者满意度市场调查服务怎么选?六大维度深度对比分析与行业趋势解读 - 优质品牌商家
  • 终极暗黑破坏神2存档编辑器:可视化修改让游戏体验升级
  • 覆盖多行业的AI解决方案:AI知识库智能体落地全解析
  • 2026杭州网站建设公司排名:企业官网、营销网站、GEO网站十大场景分析
  • 2026年彩钢围挡厂家电话与市场分析:从川渝到京津冀的服务格局与选择策略 - 优质品牌商家
  • 2026上海早教课程怎么选?科学培养孩子综合能力 - 品牌排行榜
  • 保姆级教程:OpenWrt 22.03下光猫拨号场景的IPv6完整配置(附网络拓扑图)
  • i.MX233 ARM9 SoC高集成度设计解析与嵌入式系统实战指南
  • 2026乐山跷脚牛肉店实测指南:本地人反复光顾的7家老店在哪里? - 优质品牌商家
  • 2026上海早教排行榜前十 家长选择参考 - 品牌排行榜
  • 从‘科目一测试’到商业应用:ViewPager+Fragment的5个高级玩法与避坑指南
  • 2026杭州中小企业开发公司排名:为什么场景落地比单纯看大厂更重要
  • VMware Workstation Pro 17免费许可证密钥终极指南:快速获取与完整激活教程
  • BilibiliVideoDownload跨平台视频下载工具终极指南:从入门到精通
  • 5G手机省电的秘密武器:BWP技术详解与实测功耗对比