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

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

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

前置条件:SpringCloud脚手架

img

单机模式下的Nacos控制台:img

<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服务注册与发现

img

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);}
}

启动效果:

img

启动两个服务:

img

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。

img

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

img

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

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参数.

img

在对应的模块当中新建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.

img

配置文件:bootstrap.yaml

spring:#在nacos中对应的dataID名application:#应用名称name: lottery-activityprofiles:# 环境配置active: @profiles.active@
--- # nacos 配置
spring:cloud:config:override-none: trueallow-override: trueoverride-system-properties: falsenacos:# 注册地址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.yamlrefresh: truerefresh-enabled: true

Nacos的持久化

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

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

img

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

img

http://www.lryc.cn/news/111916.html

相关文章:

  • Dockerfile构建Tomcat镜像
  • k8s的介绍
  • mysql sql语句 需要使用like 场景,解决方案
  • 通过C语言设计的贪吃蛇游戏(控制台终端)
  • c++实现Qt信号和槽机制
  • 【Linux】五、进程
  • 使用 OpenCV 和 Python 卡通化图像-附源码
  • GitLab不同角色对应的权限
  • 手写一个简易的布隆过滤器
  • 阿里云快速部署开发环境 (Apache + Mysql8.0)
  • 侧边栏的打开与收起
  • 贝叶斯学习
  • Java并发系列之六:CountDownLatch
  • 24数据结构-图的基本概念与存储结构
  • 自然语言处理学习笔记(三)————HanLP安装与使用
  • CS 144 Lab Five -- the network interface
  • Mecha
  • Apache RocketMQ之集成RocketMQ_MQTT 安装部署协议
  • Oracle多行数据合并为一行数据,并将列数据转为字段名
  • MySQL5.7 与 MariaDB10.1 审计插件兼容性验证
  • PyTorch Lightning教程五:Debug调试
  • 末流211无科研保研经验分享
  • 日期选择器多选换行
  • NodeJS原型链污染ctfshow_nodejs
  • 18. SpringBoot 如何在 POM 中引入本地 JAR 包
  • vue2-$nextTick有什么作用?
  • python自动收集粘贴板
  • Vue3_语法糖—— <script setup>以及unplugin-auto-import自动引入插件
  • 2023-08-06力扣做过了的题
  • 进程间通信之管道