Nacos下载和安装以及使用,以及搭建Nacos

安装和下载

下载地址:Releases · alibaba/nacos · GitHub

windows版本的,不需要安装,下载好直接解压,然后到bin目录下,执行

startup.cmd -m standalone 启动即可。

注册成Windows服务(不注册也能用)

  • 插件下载 

 地址:Releases · winsw/winsw · GitHub

  •  将set MODE改为 standalone

  •  配置文件和插件安装

在nacos文件夹的bin目录下创建nacos-service.xml文件(文件名根据自己想要的名称更改)

 

xml配置文件。logpath路径、executable路径、stopexecutable路径,根据自己的路径填写

 <?xml version="1.0" encoding="UTF-8" ?>
    <service>
      <id>nacos</id>
      <name>Nacos Service</name>
      <description>Nacos-service</description>
      <logpath>D:\application\nacos\bin\logs\</logpath>
      <logmode>roll</logmode>
      <executable>D:\application\nacos\bin\startup.cmd</executable>
      <stopexecutable>D:\application\nacos\bin\shutdown.cmd</stopexecutable>
    </service>

  •  将刚刚下载的WinSW-x64.exe插件移动到nacos解压目录的bin目录下
  • 改名为:nacos-service.exe(根据自己设置的xml文件名而定)
  • 在bin目录下输入cmd,打开命令行,输入:nacos-service.exe install (前面根据文件名而定)
  • 在cmd命令行输入:net start nacos,启动服务

搭建Nacos

服务发现中心
  • 在搭建Nacos服务发现中心之前需要搞清楚两个概念:namespace 和 group
  • namespace:用于区分环境、比如:开发环境、测试环境、生产环境
  • group:用于区分项目,比如:project项目,asset项目
  • 首先在nacos配置namespace
  • 启动nacos访问nacos登录
  • 点击左侧菜单进入命名空间,新建命名空间

 命名空间ID相当于ymal配置文件中对应的namespace

 创建成功如下

  •  服务注册到Nacos
  • 在pom文件中添加服务注册和发现的依赖

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

    <version>2021.0.4.0</version>
</dependency>

  •  在服务的配置文件中配置

#微服务配置
spring:
  application:
    name: system-service
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project

  •  重启服务。待微服务重启成功,进入naacos服务查看服务列表

 

  •  点击详情可以查看微服务实例地址
配置中心

搭建完成Nacos服务发现中心,下边搭建Nacos为配置中心,其目的就是通过Nacos去管理项目的所有配置。

先将项目中的配置文件分分类:

1、每个项目特有的配置

是指该配置只在有些项目中需要配置,或者该配置在每个项目中配置的值不同。

比如:spring.application.name每个项目都需要配置但值不一样,以及有些项目需要连接数据库而有些项目不需要,有些项目需要配置消息队列而有些项目不需要。

2、项目所公用的配置

是指在若干项目中配置内容相同的配置。比如:redis的配置,很多项目用的同一套redis服务所以配置也一样。

另外还需要知道nacos如何去定位一个具体的配置文件,即:namespace、group、dataid.

1、通过namespace、group找到具体的环境和具体的项目。

2、通过dataid找到具体的配置文件,dataid有三部分组成

比如:content-service-dev.yaml配置文件  由(content-service)-(dev). (yaml)三部分组成

content-service:第一部分,它是在application.yaml中配置的应用名,即spring.application.name的值。

dev:第二部分,它是环境名,通过spring.profiles.active指定,

Yaml: 第三部分,它是配置文件 的后缀,目前nacos支持properties、yaml等格式类型,本项目选择yaml格式类型。

所以,如果我们要配置content-service工程的配置文件:

在开发环境中配置content-service-dev.yaml

在测试环境中配置content-service-test.yaml

在生产环境中配置content-service-prod.yaml

我们启动项目中传入spring.profiles.active的参数决定引用哪个环境的配置文件,例如:传入spring.profiles.active=dev表示使用dev环境的配置文件即content-service-dev.yaml。

示例

下边以开发环境为例对content-service工程的配置文件进行配置,进入nacos,进入开发环境。

点击加号,添加一个配置

输入data id、group以及配置文件内容。

为什么没在nacos中配置下边的内容 ?

YAML
spring:
  application:
    name: content-service

因为刚才说了dataid第一部分就是spring.application.name,nacos 客户端要根据此值确定配置文件 名称,所以spring.application.name不在nacos中配置,而是要在工程的本地进行配置。

在content-service工程的test/resources 中添加bootstrap.yaml,内容如下:

YAML
spring:
  application:
    name: content-service
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project
      config:
        namespace: dev
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true

#profiles
默认为dev
  profiles:
    active: dev

在内容管理模块的接口工程和service工程配置依赖:

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

 公用配置

 

还有一个优化的点是如何在nacos中配置项目的公用配置呢?

nacos提供了shared-configs可以引入公用配置。

在content-api中配置了swagger,所有的接口工程 都需要配置swagger,这里就可以将swagger的配置定义为一个公用配置,哪个项目用引入即可。

单独在xuecheng-plus-common分组下创建xuecheng-plus的公用配置,进入nacos的开发环境,添加swagger-dev.yaml公用配置

删除接口工程中对swagger的配置。

项目使用shared-configs可以引入公用配置。在接口工程的本地配置文件 中引入公用配置,如下:

YAML
spring:
  application:
    name: content-api
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev
        group: xuecheng-plus-project
      config:
        namespace: dev
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true
        extension-configs:
          - data-id: content-service-${spring.profiles.active}.yaml
            group: xuecheng-plus-project
            refresh: true
        shared-configs:
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
  profiles:
    active: dev

再以相同 的方法配置日志的公用配置。

在接口工程和业务工程,引入loggin-dev.yaml公用配置文件

配置优先级

微服务的配置统一在nacos进行配置,用到的配置文件有本地的配置文件 bootstrap.yaml和nacos上的配置文件,SpringBoot读取配置文件 的顺序如下:

引入配置文件的形式有:

1、以项目应用名方式引入

2、以扩展配置文件方式引入

3、以共享配置文件 方式引入

4、本地配置文件

各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件  > 共享配置文件 > 本地配置文件。

有时候我们在测试程序时直接在本地加一个配置进行测试,比如下边的例子:

我们想启动两个内容管理微服务,此时需要在本地指定不同的端口,通过VM Options参数,在IDEA配置启动参数

通过-D指定参数名和参数值,参数名即在bootstrap.yml中配置的server.port。

启动ContentApplication2,发现端口仍然是63040,这说明本地的配置没有生效。

这时我们想让本地最优先,可以在nacos配置文件 中配置如下即可实现:

YAML
#配置本地优先
spring:
 cloud:
  config:
    override-none: true

再次启动ContentApplication2,端口为63041。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值