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

设计响应式网站多少钱智能云建站平台

设计响应式网站多少钱,智能云建站平台,做网站如何月入10万,dede和wordpress哪个安全Spring Cloud 服务调用详解:Ribbon 负载均衡与 Feign 声明式接口调用 在微服务架构中,服务与服务之间的调用是核心功能之一。Spring Cloud 提供了多种调用方式,本文将详细介绍: Ribbon 实现客户端负载均衡的原理与实践Feign 实现…

Spring Cloud 服务调用详解:Ribbon 负载均衡与 Feign 声明式接口调用

在微服务架构中,服务与服务之间的调用是核心功能之一。Spring Cloud 提供了多种调用方式,本文将详细介绍:

  • Ribbon 实现客户端负载均衡的原理与实践
  • Feign 实现声明式服务调用的方式及优势

一、Ribbon 实现客户端负载均衡

1.1 什么是 Ribbon?

Ribbon 是 Netflix 提供的一种客户端负载均衡工具,Spring Cloud 对其进行了封装,允许通过服务名代替真实地址实现服务调用,并具备负载均衡策略(如轮询、随机等)。

1.2 配置 RestTemplate 支持 Ribbon

@Configuration
public class ConsumerConfig {@Bean@LoadBalanced  // 开启负载均衡能力public RestTemplate restTemplate() {return new RestTemplate();}
}

1.3 Controller 使用 RestTemplate 远程调用服务

@RestController
public class ConsumerController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/index")public String index() {return "consumer远程调用provider:" +this.restTemplate.getForObject("http://provider/index", String.class);}
}

此处调用的是名为 provider 的服务,其真实地址由 Ribbon 根据注册中心获取并选择一个实例。


1.4 修改默认的负载均衡策略(轮询 → 随机)

默认策略是轮询(RoundRobinRule),如果想改为随机:

server:port: 8180
provider:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

1.5 基于 Nacos 实现权重负载均衡

Ribbon 默认不支持权重负载均衡,但我们可以结合 Nacos 的元数据权重机制,自定义一个 NacosWeightedRule 来实现权重分配。

步骤 1:自定义负载均衡策略类
@Slf4j
public class NacosWeightedRule extends AbstractLoadBalancerRule {@Autowiredprivate NacosDiscoveryProperties nacosDiscoveryProperties;@Overridepublic void initWithNiwsConfig(IClientConfig iClientConfig) {//读取配置文件}@Overridepublic Server choose(Object o) {ILoadBalancer loadBalancer = this.getLoadBalancer();BaseLoadBalancer baseLoadBalancer = (BaseLoadBalancer) loadBalancer;//获取要请求的微服务名称String name = baseLoadBalancer.getName();//获取服务发现的相关APINamingService namingService = nacosDiscoveryProperties.namingServiceInstance();try {Instance instance = namingService.selectOneHealthyInstance(name);log.info("选择的实例是port={},instance={}",instance.getPort(),instance);return new NacosServer(instance);} catch (NacosException e) {e.printStackTrace();return null;}}
}
步骤 2:配置 Ribbon 使用自定义规则
provider:ribbon:NFLoadBalancerRuleClassName: com.consumer.config.NacosWeightedRule

只需在服务提供者的 Nacos 元数据中配置或者网页动态配置:

image-20250620154911590

spring:cloud:nacos:discovery:metadata:weight: 3

即可实现服务实例按权重分配请求。


二、Feign 实现声明式接口调用

相比手动拼接 URL 的 RestTemplateFeign 更加优雅,它通过接口加注解的方式实现远程调用,并集成了 Ribbon 支持负载均衡。

2.1 添加依赖

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

2.2 创建 Feign 接口

@FeignClient("provider")
public interface Feign {@GetMapping("/index")String index();
}

Feign 会根据接口方法定义自动生成远程调用逻辑,服务名称来自注册中心。


2.3 启动类开启 Feign 功能

@SpringBootApplication
@EnableFeignClients
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}

2.4 控制层直接注入接口调用

@RestController
public class ConsumerController {@Autowiredprivate Feign providerFeign;@GetMapping("/index")public String index() {return "consumer远程调用provider:" + this.providerFeign.index();}
}

Ribbon + RestTemplate 与 Feign 对比

对比项Ribbon + RestTemplateFeign 声明式调用
使用复杂度需要拼接 URL,逻辑较复杂接口 + 注解,简洁直观
代码维护性不利于维护更高的可读性与扩展性
底层实现Ribbon 实现负载均衡Ribbon + 动态代理
适用场景非常规请求或特殊场景调用推荐用于大部分服务之间通信

总结

  • Ribbon 提供基础的客户端负载均衡能力,适用于灵活调用;
  • Feign 提供声明式接口调用方式,推荐作为主流调用方式;
  • 可结合 Nacos 提供的权重元数据,实现更合理的负载均衡策略;
  • 注意:Spring Cloud 2020 版本起,Ribbon 被官方弃用,推荐使用 Spring Cloud LoadBalancer。

附注:推荐使用 Spring Cloud Alibaba Nacos 搭配 Feign,实现高效稳定的服务通信。

相关参考:

  • Spring Cloud OpenFeign 中文文档
  • Spring Cloud ribbon - 《Spring Cloud中文文档》
  • Nacos 官方文档)

如果你觉得本文对你有帮助,欢迎点赞 👍 收藏 ⭐ 留言 💬!

👉 作者博客持续更新:Spring Boot、微服务、前后端分离实践干货


文章转载自:

http://YuKwyDe1.Lxqyf.cn
http://Ig9DOgtj.Lxqyf.cn
http://asSPUXAf.Lxqyf.cn
http://kTdHxbg2.Lxqyf.cn
http://zof8ACiu.Lxqyf.cn
http://7dq3GfF9.Lxqyf.cn
http://NW8kZ2Wi.Lxqyf.cn
http://QtBsgvDT.Lxqyf.cn
http://JRIn6uoE.Lxqyf.cn
http://hHc19lvc.Lxqyf.cn
http://iHKkCPKg.Lxqyf.cn
http://ZuDpWTeh.Lxqyf.cn
http://XMyxlf9R.Lxqyf.cn
http://PNdVrFjP.Lxqyf.cn
http://8PAa1mM4.Lxqyf.cn
http://0qCgSnnS.Lxqyf.cn
http://KdEvXYvn.Lxqyf.cn
http://G5gOzQAV.Lxqyf.cn
http://amPDXvwb.Lxqyf.cn
http://0A2gFHP3.Lxqyf.cn
http://GZfu4pxV.Lxqyf.cn
http://xWbbV6ES.Lxqyf.cn
http://NrmnLJhL.Lxqyf.cn
http://bO1NCubK.Lxqyf.cn
http://N1MEoosn.Lxqyf.cn
http://OZMXQoZd.Lxqyf.cn
http://yVw7mDfx.Lxqyf.cn
http://tzTo7Vvj.Lxqyf.cn
http://IMANRg5K.Lxqyf.cn
http://0AO7pbEd.Lxqyf.cn
http://www.dtcms.com/wzjs/609591.html

相关文章:

  • 帮企业做网站的网络广告案例
  • 一元购网站建设方案书无锡企业免费建站
  • 两学一做网站专题做曖免费网站
  • c2c的网站名称和网址主题网站建设
  • 包年seo和整站优化wordpress如何配置百度云cdn
  • 为什么自己做的网站uc打不开屏蔽wordpress google
  • 天水有做网站的地方吗芯片设计公司排名
  • 在线解压rar网站杭州网站定制开发哪家好
  • 优化网站是什么意思设计模板修饰演示文稿
  • 开发公司房子出售怎么不交税旺道seo优化软件怎么用
  • 百度官方网站登录html网页设计代码作业化妆品
  • 像素点建网站域名查询解析
  • 东莞企业网站制作网站开发 定制
  • 盗号网站怎么做培训网站建设的背景
  • 广东网站建设建站模板种子网站开发
  • 网站推广具体内容如何优化seo技巧
  • asp网站访问量大电子元器件网站怎么做
  • 自己做的php网站进行伪静态wordpress模板关系
  • php开发企业网站教程网站关键词方案
  • 同样是div 怎么有些网站收录少 有些多wordpress首页文章随机显示
  • 微信小程序企业网站电子商务网站的建设心得体会
  • 怎么做私人网站网站使用cookies
  • 百度 搜索热度企业整站优化
  • 深圳华强北有什么好玩的seo快速排名系统
  • 一个网站的建设流程有哪些网站建设课程设计报告总结
  • 做视频网站需要哪些技术指标wordpress做seo
  • 美食网站开发与研究 论文品牌网站建设解决
  • 一般做网站所使用的字体怀柔建设网站
  • 科普网站建设方案微信上的小说网站是怎么做的
  • 企业网站推广文案网站开发最新书籍