【Nacos篇】Nacos基本操作及配置

官方文档:https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html

前置条件:SpringCloud脚手架

【Nacos篇】Nacos基本操作及配置

单机模式下的Nacos控制台:【Nacos篇】Nacos基本操作及配置

<dependencies>         <!-- Registry 注册中心相关 -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>         </dependency>          <!-- Config 配置中心相关 -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>         </dependency>         <!--服务间的远程调用-->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-loadbalancer</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-openfeign</artifactId>         </dependency>     </dependencies> 

Nacos服务注册与发现

【Nacos篇】Nacos基本操作及配置

GitHub官方注册中心实例https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery

作为注册中心的nacos主要有三种角色:

  1. 服务提供者
  2. 服务消费者
  3. 服务注册中心

Nacos配置

<dependency>     <groupId>com.alibaba.cloud</groupId>     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 

实现使用openFeign的负载均衡:

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

Nacos之前的默认的负载均衡是Ribbon,现版本Nacos 2021已经没有自带Ribbon的整合,所以无法通过修改Ribbon负载均衡的模式来实现Nacos提供的负载均衡模式;

启动类增加注解开关:配置文件在最后

@EnableFeignClients //openfeign  负载均衡及服务调用 @EnableDiscoveryClient  //nacos  注册中心 @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class LotteryRpc {     public static void main(String[] args) {         SpringApplication.run(LotteryRpc.class, args);     } } 

启动效果:

【Nacos篇】Nacos基本操作及配置

启动两个服务:

【Nacos篇】Nacos基本操作及配置

OpenFeign使用

在微服务下,每个模块的主启动类都要设置上述的相关的配置。

lottery-activity--------请求-------->lottery-strategy

Lottery-Cloud └── lottery-activity     └── lottery-activity-facade         └── IActivityToStrategyIntegration └── lottery-strategy     └── lottery-strategy-controller         └── StrategyController.java 

IActivityToStrategyIntegrationn内容

@Service @FeignClient(value = "lottery-strategy") public interface IActivityToStrategyIntegration {     /**      * 添加活动策略      * @param strategyDtos      */     @PostMapping("/facade/addStrategy")     void addStrategy(@RequestBody StrategyDto strategyDtos); } 

strategy服务中正常的接口实现,但是请求的地址、数据类型等需要保持一致。

@PostMapping("/facade/addStrategy") public void addStrategy(@RequestBody StrategyDto strategyDtos){     log.info("活动模块请求策略模块,请求参数:{}",strategyDtos); } 

Nacos的配置中心

公共配置

在微服务项目中,多个模块在MySQL、Redis、RocketMQ等有些配置上是相同的,可以将相同的配置抽取出来,通过nacos的扩展进行引入,实现配置共享。

在nacos对应的空间中创建公共yaml。

【Nacos篇】Nacos基本操作及配置

我将mysql、druid、mybatis-plus等配置抽取了。

【Nacos篇】Nacos基本操作及配置

启动项目,看到一下内容则表示配置完成:

2023-08-06 16:50:37.162  INFO 17508 --- [           main] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=lottery-common-dev.yaml, group=DEFAULT_GROUP 

单独配置

在开发过程中不免有需要自定义的参数获取,在nacos可以通过编写配置文件来获取nacos中自定义参数。

我们新建一个yaml文件:lottery-strategy-dev.yaml文件,里面添加MaxTimes=1参数.

【Nacos篇】Nacos基本操作及配置

在对应的模块当中新建StrategyConfig

/**  * @author xbhog  * @describe:  * @date 2023/8/5  */ @Getter @Configuration @RefreshScope //自动刷新 public class StrategyConfig {      @Value("${MaxTimes}")     private String maxTimes; } 

设置测试请求:

@Autowired private StrategyConfig strategyConfig; //-------------------------------------- @GetMapping("/test") public ResponseResult<String> test(){     log.info("============获取的值:{}",strategyConfig.getMaxTimes());     return ResponseResult.success(null); } 

测试数据:

2023-08-06 17:01:25.328 [http-nio-8001-exec-3] INFO  o.a.c.c.C.[Tomcat].[localhost].[/]: Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-08-06 17:01:25.328 [http-nio-8001-exec-3] INFO  o.s.web.servlet.DispatcherServlet: Initializing Servlet 'dispatcherServlet' 2023-08-06 17:01:25.330 [http-nio-8001-exec-3] INFO  o.s.web.servlet.DispatcherServlet: Completed initialization in 1 ms 2023-08-06 17:01:25.384 [http-nio-8001-exec-3] INFO  c.x.controller.StrategyController: ============获取的值:1 

当修改完参数值,发布后,Springboot开始监听到并更新。在请求,数据就变成了2.

【Nacos篇】Nacos基本操作及配置

配置文件:bootstrap.yaml

spring:   #在nacos中对应的dataID名   application:     #应用名称     name: lottery-activity   profiles:     # 环境配置     active: @profiles.active@ --- # nacos 配置 spring:   cloud:     config:       override-none: true       allow-override: true       override-system-properties: false     nacos:       # 注册地址       server-addr: @nacos.server@       discovery:         # 注册组         group: @nacos.discovery.group@         namespace: ${spring.profiles.active}       config:         # 配置组         group: @nacos.config.group@         namespace: ${spring.profiles.active}         file-extension: yaml         #引入公共配置文件,开启自动刷新         shared-configs:           - data-id: lottery-common-dev.yaml             refresh: true         refresh-enabled: true 

Nacos的持久化

基于MySQL的持久化,主要修改nacosconfapplication.properties,该版本是MySQL5.6.

数据库名字、账号、密码需要自己设置。

【Nacos篇】Nacos基本操作及配置

重启nacos,查看数据库中的nacos配置。

【Nacos篇】Nacos基本操作及配置

发表评论

评论已关闭。

相关文章