首页 > 其他分享 >【Nacos篇】Nacos基本操作及配置

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

时间:2023-08-06 22:23:20浏览次数:34  
标签:lottery spring 配置 Nacos nacos 基本操作 alibaba cloud

官方文档: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-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的持久化,主要修改nacos\conf\application.properties,该版本是MySQL5.6.

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

img

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

img

标签:lottery,spring,配置,Nacos,nacos,基本操作,alibaba,cloud
From: https://www.cnblogs.com/xbhog/p/17610186.html

相关文章

  • nacos系列:简介和安装
    目录版本选择安装windows安装centos安装mysql方式存储官网:https://nacos.iogithub:https://github.com/alibaba/nacos或https://kgithub.com/nacos-group/nacos-examplesgitee:https://gitee.com/mirrors/Nacosnacos示例:https://kgithub.com/nacos-group/nacos-examples下载......
  • 部署Nginx配置动静分离
    一、Nginx正则表达式和动静分离1、Nginx处理动态网站数据的方式 1)动静分离 静态请求Nginx处理 动态请求通过Nginx正则表达式转发到LAMP平台 2)LNMP处理  Nginx服务器配置php通过php-fpm处理php语言2、Nginx功能  1)网站服务器  默认只能处理静态数据 处理客户......
  • Idea-EasyCode插件配置
    1.Idea插件设置1.1.EasyCode插件  具体操作省略,按照后如下截图:    1.2.EasyCode模板1.2.1模板清单 1.2.2模板-MybatisPlusConfig.vm##设置回调$!callback.setFileName($tool.append("MybatisPlusConfig",".java"))$!callback.setSavePath($tool.append($tab......
  • Linux下Nacos安装与配置
    Nacos作注册中心与配置中心准备Nacos依赖Java环境来运行Java环境下载&配置GIT环境安装Mysql环境安装1、安装:从https://nacos.io/zh-cn/index.html下载最新版并解压tar-xvfnacos-server-1.4.0.tar.gz或从git拉取gitclonehttps://github.com/alibaba/naco......
  • 【VSCode】mac系统利用VSCode配置C++环境
    https://blog.csdn.net/bsy1111/article/details/131056647在官网上看到VSformac不能建C++项目,找到一个教程用VSCode配置一下C++环境可以跑点简单的代码应付一下日常使用,要是有大佬知道怎么在mac上用VisualStudio写C++的话还麻烦不吝赐教......
  • Nodejs安装与配置
    一、安装环境1、本机系统:Windows10家庭中文版64位2、Node.js:node-v8.2.0-x64.msi二、安装Node.js步骤1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/2、选安装目录进行安装3、环境配置4、测试三、开始安装1、下载完成后,双击“node-v8.2.0-x64.msi”......
  • python配置
    python配置pip设置全局清华源pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simplejupyter安装pipinstalljupyterlabjupyter内核配置pipinstallipykernelpython-mipykernelinstall--user--name=yolov8jupyterkernelspeclistjupyter......
  • Spring 配置 Bean 实例化有哪些方式?
    Allyouneedistheplan,theroadmap,andthecouragetopressontoyourdestination.你所需要的只是计划,路线图,以及朝着目标前进的勇气。Spring实例化bean的方式构造器的方式静态工厂方式实例化工厂方式1、使用构造器实例化bean也是最常用的ps:注意:Hello......
  • F5 LTM 知识点和实验 10-基础配置
    第十章基础配置VLANVLAN是对物理网络进行逻辑分区的一种方式,可以创建不同的广播域。将具有共同要求的主机分组在一个VLAN中——不管它们的物理位置如何——提供了明显的优势,包括:减小广播域的大小,从而提高网络的整体性能显著减少系统和网络维护任务(功能相关的主机不再需要物......
  • 【JavaScript08】字符串基本操作
    字符串基本方法,本文只对部分方法做了说明其它更多参考菜鸟教程https://www.runoob.com/jsref/jsref-obj-string.htmls.split()字符串切割s.substr(start,len)字符串切割,从start开始切,切len个字符;如果len不给,直接切到最后s.substring(start,end)字符串切割,从st......