Ribbon、Nacos

目录

Ribbon

常见负载算法

切换负载均衡算法

Nacos注册中心

下载和运行

微服务模块接入注册中心

consumer-80模块

配置类

Controller

Nacos配置中心

Nacos分类配置(实现配置隔离)

DataID方案

Group方案

Namespace方案

总结


Ribbon

Ribbon已经维护了,未来替换方案:SpringCloud LoadBalancer

常见负载算法

切换负载均衡算法

Nacos注册中心

使用RestTemplate,目前是硬编码

Nacos就是替代 注册中心【Eureka】 和  配置中心【Config】

支持AP和CP,可以切换

下载和运行

下载版本(找自己想要的版本):Tags · alibaba/nacos · GitHub

本地有良好的 Java8 + Maven环境

解压安装包,直接运行bin 目录下的startup.cmd

命令运行成功后直接访问:http://localhost:8848/nacos

默认用户名/密码为nacos

微服务模块接入注册中心

1、父工程引入依赖

2、子模块(provider-10000、consumer-80)引入依赖

3、yml

4、主启动类:加上@EnableDiscoveryClient注解

consumer-80模块

  nacos集成了ribbon,支持负载均衡

配置类

使用@LodadBalanced注解,从注册中心拉取服务名,通过负载算法完成调用

Controller

对于服务提供模块,本来有10000端口,现在复制一份,改为10001端口

统一命名对外暴露的名字,两个模块的名字都是member-service-provider

Nacos配置中心

每个微服务模块可以拉取配置中心的配置,统一使用、更改

新建配置客户端模块,端口5000

1、引入依赖

2、application.yml

3、bootstrap.yml(可以读取外部配置的内容)

        bootstrap加载优先级高于application,不能被覆盖

服务注册中心和配置中心可能不是同一个,目前是本机,所以是相同的地址

4、进入Nacos,加入配置(文件后缀必须是.yaml

        dataid必须和微服务的名称一致

5、使用@Vlaue("${ }")可以读取信息

6、主启动类

spring.application.name 对应: e-commerce-config 拼接

在application.yml: 配置 spring.profiles.active: dev拼接

spring.cloud.nacos.config.file-extension 配置文件的扩展名:yaml拼接

Data ID规则: ${spring.application.name}.${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

Nacos分类配置(实现配置隔离)

DataID方案

有多个同名Data ID的配置文件,只有后缀不同-dev,-test,

只需要把配置中心模块的application.yml的active修改成test就能读取数据

Group方案

Namespace方案

以开发dev环境为例

先找namespace,再找group,再根据DataID规则进行查找

总结

<think>好的,我现在需要帮助用户了解如何将NacosRibbon集成以实现服务发现和负载均衡。首先,我需要回顾一下NacosRibbon的基本概念以及它们各自的角色。Nacos是阿里巴巴开源的服务发现和配置管理平台,而Ribbon是Netflix开发的客户端负载均衡器。在Spring Cloud生态中,它们通常一起使用。 根据用户提供的引用内容,特别是引用[1]提到Spring Cloud Alibaba整合了Ribbon,而不是使用Nacos Client自带的负载均衡。这说明在集成过程中,Ribbon仍然是负载均衡的主要实现方式。接下来,我需要考虑如何具体配置这两个组件。 首先,用户需要添加相关的依赖。Spring Cloud Alibaba的依赖管理应该包括Nacos Discovery和Ribbon的支持。引用[4]提到了启动provider和consumer服务,这提示需要在服务提供者和消费者中都配置Nacos服务注册。同时,引用[5]给出了配置永久实例的例子,可能需要设置ephemeral属性为false,确保服务实例在Nacos中持久化。 然后是配置文件的设置。在application.yml中,需要指定Nacos服务器的地址,以及服务的名称。这里要注意的是,虽然Nacos自身有负载均衡功能,但根据引用[1],Ribbon会被默认使用,所以不需要额外配置Nacos的负载均衡,而是通过Ribbon的策略来实现。 接下来是服务调用部分。在消费者服务中,使用RestTemplate或OpenFeign来发起请求,此时Ribbon会自动介入进行负载均衡。例如,使用@LoadBalanced注解修饰的RestTemplate会启用Ribbon的负载均衡能力,将服务名解析为具体的实例地址。 关于负载均衡策略,Ribbon提供了多种策略如轮询、随机、加权等。用户可能需要自定义策略,这时需要创建配置类并指定策略,比如使用随机规则代替默认的轮询。 另外,引用[3]提到Nginx通常作为边缘代理,而Gateway处理路由等,但在这个问题中,用户关注的是NacosRibbon的集成,所以可能需要区分它们的不同角色,确保Ribbon在服务间调用时正确工作。 最后,需要验证配置是否正确。启动多个服务提供者实例,注册到Nacos,然后通过消费者调用服务,观察请求是否被均匀分配到各个实例。同时,检查Nacos控制台的服务列表,确认实例状态正常。 总结步骤:添加依赖、配置NacosRibbon、启用负载均衡、自定义策略(可选)、测试验证。同时要注意版本兼容性,确保Spring Cloud Alibaba、Spring Boot和Nacos Server的版本匹配,避免出现兼容性问题。</think>### Nacos 配合 Ribbon 实现服务发现及负载均衡的最佳实践 #### 1. 环境准备 - **Nacos Server** 启动并运行(推荐集群部署[^2]) - **Spring Boot 项目** 添加依赖: ```xml <!-- Spring Cloud Alibaba Nacos Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- Ribbon 负载均衡 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> ``` #### 2. 基础配置 ```yaml # application.yml spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # Nacos 服务地址 ephemeral: false # 建议生产环境使用非临时实例[^5] ``` #### 3. 服务注册与发现 - **服务提供者** 添加注解 `@EnableDiscoveryClient` - **服务消费者** 通过 `DiscoveryClient` 获取实例列表 - 启动类需包含 `@SpringBootApplication` 和 `@EnableDiscoveryClient` #### 4. 负载均衡实现 通过 `@LoadBalanced` 注解激活 Ribbon: ```java @Bean @LoadBalanced // 关键注解,启用 Ribbon 负载均衡 public RestTemplate restTemplate() { return new RestTemplate(); } ``` 调用服务时使用**服务名**代替具体IP: ```java String result = restTemplate.getForObject( "http://SERVICE-PROVIDER/api/resource", // SERVICE-PROVIDER 是注册的服务名 String.class ); ``` #### 5. 负载均衡策略配置(可选) Ribbon 默认使用轮询策略,可通过配置修改: ```yaml # 针对特定服务的策略配置 SERVICE-PROVIDER: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 随机策略 ``` #### 6. 验证与监控 - 访问 Nacos 控制台(默认地址:`http://localhost:8848/nacos`)查看服务注册状态 - 通过多次请求观察不同实例的调用分布 - 使用 `@RibbonClient` 注解实现自定义策略扩展 #### 版本兼容建议 $$ \begin{cases} \text{Spring Boot 2.4.x} & \rightarrow \text{Spring Cloud 2020.0.x} \\ \text{Nacos Server 2.0.3} & \rightarrow \text{Spring Cloud Alibaba 2021.1} \end{cases} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值