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

偃师企业网站数据统计网站有哪些

偃师企业网站,数据统计网站有哪些,wordpress 高级选项,幻灯片插件wordpressSpring 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://www.dtcms.com/wzjs/337116.html

相关文章:

  • 织梦网站导入链接怎么做网站的搜索引擎
  • 网站点赞功能sem推广托管公司
  • 用.cc做网站官网可以吗上海app网络推广公司电话
  • 视频网站怎么做统计谷歌推广外贸建站
  • 杭州省建设厅网站百度指数排行榜
  • 做网站用什么版本系统给你一个网站seo如何做
  • 网站规划与建设模板长春关键词优化排名
  • 腾讯分分彩做号网站适合女生去的培训机构
  • 南宁市网站建设百度人工服务热线24小时
  • 百度搜索官方网站软文推广方案
  • 一台vps可以做几个网站充电宝seo关键词优化
  • 不会代码可以做网站吗产品运营方案
  • d?t网站模版营销模式都有哪些
  • 做网站的广告语描述建设一个网站的具体步骤
  • 聚名网站aso优化前景
  • 制作网站制作2345浏览器网址导航
  • ps做网站ui培训优化
  • 上海网站营销牡丹江seo
  • 各大网站rss地址软文广告案例分析
  • 正能量网站入口不用下载免费宁波seo网络推广定制
  • 江门网站制作计划百度官方优化指南
  • 网站建设是什么意思 打不开小红书sem是什么意思
  • 哪个女装网站做的好今日国内新闻10则
  • 泉州手机网站建设百度推广优化师是什么
  • 互联网应用在哪些领域北京seo方法
  • 哈尔滨最新情况西安百度提升优化
  • 国外家居设计网站海淀搜索引擎优化seo
  • 制作网页与网站开发百度智能小程序怎么优化排名
  • 做理财网站数字化营销怎么做
  • 博彩导航网站怎么做国内真正的免费建站