Nacos简单搭建使用,规则配置,环境部署,配置中心

一:前言

最近在学习Nacos,Nacos是一个更易于构建在云原生应用的动态服务发现、配置管理和服务管理平台。相对于传统的注册中心(Eureka、Consul等),Nacos集百家之长,将原有的功能进行优化,并新增功能。这就使得它成为目前较好的一个服务管理平台。

1:Nacos有更丰富的功能和易用性,如动态配置分组、服务健康检测等;

2:Nacos有更活跃的社区和生态支持,且目前还在更新维护,Eureka已停止更新维护,不过目前市面上还是有不少使用Eureka的公司及项目,一方面是停更不影响使用,也没什么大问题,项目中还是以业务为主。另一方面是项目体积过大,不好切换。

3:Nacos有更好的性能和低延迟集群,如CAP优化和集群扩展等。


二:搭建配置

首先,Nacos和Eureka注册中心的搭建方式不同。

Eureka的服务注册页面是跟随项目启动,我们通常会编写一个或多个微服务项目,专门用于做注册中心(服务端集群),后续的微服务指定注册中心(集群)并注册进去。

Nacos的注册中心则是和项目分离,下载官网压缩包解压后,运行Nacos即可,注册中心就搭建完成,后续微服务指定Nacos地址即可注册进去。

1:安装运行

官网地址:Releases · alibaba/nacos · GitHub

根据自己需求下载安装不同版本即可,一般来说最新的往前推一两个即可。windows选择zip压缩包,linux选择tar压缩包。这里先做单机启动,用于演示。

①:windows解压运行

下载zip并解压,解压后在bin目录上cmd打开窗口运行命令,注意:Nacos从2.0.3版本开始默认以集群模式启动。

所以老版本可以直接使用这个命令:startup.cmd

新版本再使用这个命令则会启动报错,需要指定单机模式启动:startup.cmd -m standalone

也可以修改Nacos的默认启动方式为单机模式:set MODE="standalone"

  ==》            

②:linux解压运行

将tar压缩包放至linux机器上,使用命令解压压缩包:tar -zxvf nacos-server-2.3.1.tar.gz

解压后切换至bin目录,单机启动nacos:sh startup.sh -m standalone

③:管理页面

运行成功后,可以输入登录地址,访问nacos:http://localhost:8848/nacos,账号密码默认都是nacos,新版本地不需要登录。

登录成功后,这里一开始是没有数据的,可以新增配置,并且这个配置会持久化到数据库,这个后面会说到。

到这里就下载、安装并运行完成了,这个只是单机模式的启动,集群会比较复杂,不过练习使用也足够了。

2:代码配置

Nacos运行成功后,表示注册中心已经搭好了,接下来可以将微服务注册进去了。

①:添加依赖

注意这里是因为父模块声明了spring cloud alibaba的版本,所以这里可以不做版本声明。

<!--添加Nacos客户端依赖,用来注册进注册中心,该注解还包括了负载均衡Ribbon-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

②:连接配置

在application配置文件中,添加Nacos的微服务名称及连接地址。

spring:
  application:
    name: cloud-nacos-provider  #微服务名称,注册中心显示
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #配置Nacos地址

在消费端可以多加一条配置,用于负载均衡的调用。使用传统 @LoadBalanced 也可以。

service-url:
  nacos-user-service: http://cloud-nacos-provider

③:添加注解

主启动类上添加注解,表示启动Nacos服务。

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderNacos9001 {

    public static void main(String[] args) {
        SpringApplication.run(ProviderNacos9001.class, args);
    }

}

④:注册成功

启动微服务,服务成功注册进Nacos,且配置负载均衡后,多个微服务时可以按照指定策略调用或默认轮询调用。

到这里服务就注册进去了,后续就可以从注册中心获取服务并进行后续操作。


三:环境部署

正式使用时,一般会有多台机器,也就是集群甚至多集群,所以环境部署还是以集群部署为主。

这里简单记录下单机和集群部署的流程。

1:单机部署

单机部署和我们上面操作一致,就一点需要注意。

配置列表默认使用自带的数据库Apache Derby,只使用一个Nacos的话没有问题。但是如果开多个Nacos的话,每个Nacos都自带一个默认数据库,就会存在数据不一致问题,为了解决该问题,Nacos(0.7版本)采用了集中式存储的方式来支持集群化,目前只支持Mysql。

修改Nacos数据库为Mysql,注意Mysql版本要求5.6.5+,本人使用5.7版本。

①:创建表

复制nacos  =>  config文件夹下Mysql文件内容,到Mysql数据库执行即可,不用修改。

这里是新版,老版本Nacos文件名可能名称不一样,但是内容是一样的。

②:修改配置

修改Nacos  =>  config下application.properties文件,添加Mysql的数据源配置,注意Mysql版本如果是8.0+,需要在连接配置加上时区。直接在原文件下加配置即可。Mysql数据库要改成自己的。

#可直接替换上面的注释,这里用作学习,新增
#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
# 指定数据源为 MySQL
spring.datasource.platform=mysql

### Count of DB:
# 数据库实例数量
db.num=1

# 数据库连接信息,如果是 MySQL 8.0+ 版本需要添加 serverTimezone=Asia/Shanghai
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3307/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=root
db.password=root

修改保存配置之后,需要重启Nacos,在页面录入配置信息,到数据库查看是否生效。


四:配置中心

主要用于解决分布式面临的一些配置问题,微服务过多导致不同环境配置文件过多,且不能动态修改。所以将配置上云,能实现不改代码直接完成配置更换。

和SpringCloud Config的区别是:

SpringCloud Config的方式是将配置放在Git上,配置文件中通过连接Git读取。这个后续可能会再写个文章记录下。这里着重介绍Nacos Config的方式。

Nacos Config配置是在页面上进行的,并且数据是存储在数据库中的,代码读取数据库中的配置,可以实现修改配置直接生效。存储的数据库默认是Apache Derby,可修改为Mysql数据库用于持久化。

注意:使用的数据库最好一开始能确定下来,中途如果更换,需要处理历史配置信息。

1:页面配置

首先在页面进行配置,配置的级别是:命名空间  >  分组Group  >  Data Id

命名空间是最大的范围,用来区分环境,默认是public。如果想要修改,添加新的命名空间即可。

分组是配置文件的进一步划分,默认是default。要使用其他的,创建配置时填写即可。

Data Id是具体配置的id,注意该配置是根据规则在后端拼接起来的。创建配置时填写。

①:命名空间新增

老版本中命名空间id是随机的,2.X版本可自定义设置,不可重复。id在后端配置用来读取。

默认的public不能删除,后续新增的可以删除。

②:配置新增

先选中指定的命名空间,默认或者没新增,就是public。

填写分组和Data Id,点击发布即可。

新增后配置列表:

如果已经切换为Mysql数据库,那么此时就可以到数据库查看配置。且后续在页面修改配置,即可生效。

2:代码配置

添加客户端依赖

<!--nacos-config客户端依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

添加配置,按照规则要和页面上的配置信息一致。

#配置端口号
server:
  port: 3377

#配置Spring
spring:
  application:
    name: nacos-config-client  #微服务名称,注册中心显示
  profiles:
    #active: dev #开发环境
    #active: test #测试环境  dataId是最小范围,配置什么就加载什么
    active: info  #添加相同dataId,测试分组和命名空间,读取不同环境下配置
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #配置Nacos地址
      config:
        server-addr: localhost:8848  #nacos作为配置中心地址,不同于eureka需要单独一个模块获取gitee配置。nacos只需要一个客户端,读取页面(服务端)配置
        file-extension: yaml  #指定yml格式的配置,需和页面配置对应
        group: dev-group   #添加分组,获取不同分组下配置
        namespace: 1001   #命名空间,新版本可以自定义id,添加后表示读取不同命名空间下的配置


#页面config配置规则  服务名-风格环境-配置文件格式    添加命名空间和分组后,表示读取不同空间下的不同分组下的不同dataId微服务
#${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
#这里为:nacos-config-client-info.yaml

主启动类配置,添加Nacos客户端注解和自动刷新注解

///支持nacos的动态刷新功能,可以加在启动类上,也可以加在相应接口上
@RefreshScope
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientNacos3377 {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientNacos3377.class, args);
    }

}

3:启动测试

配置完成后,启动项目并尝试获取配置信息中的数据,并测试改变后是否刷新。


至此,Nacos基础的使用演示就到这里了,当然更深层的东西还有很多,正式生产使用所面临的场景及各种问题也有很多,这些也还需要我们继续学习。以上也只是我日常学习所记录的,希望能够帮到大家。

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nacos配置中心支持热部署配置,即在配置文件被修改后,能够自动更新应用程序中的配置信息,无需重启应用程序。 要实现配置中心的热部署,首先需要在应用程序中使用Nacos配置客户端来获取配置信息。然后,在Nacos配置中心修改配置信息时,Nacos会自动通知应用程序更新配置信息。 具体实现步骤如下: 1. 在应用程序中引入Nacos配置客户端依赖,例如在Maven项目中,可以添加以下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 2. 在应用程序的配置文件中配置Nacos配置中心地址和应用程序的配置项,例如: ```yaml spring: application: name: my-application cloud: nacos: config: server-addr: localhost:8848 namespace: your-namespace group: your-group refreshable-dataids: your-config-id ``` 其中,`server-addr`是Nacos配置中心地址,`namespace`是Nacos的命名空间,`group`是配置的分组,`refreshable-dataids`是要热部署配置项的ID。 3. 在应用程序中使用`@Value`注解来获取配置项的值,例如: ```java @RestController public class MyController { @Value("${your-config-id}") private String configValue; @GetMapping("/config") public String getConfig() { return configValue; } } ``` 4. 在Nacos配置中心修改配置信息时,Nacos会自动通知应用程序更新配置信息。应用程序会重新加载最新的配置信息,无需重启应用程序。 需要注意的是,热部署配置项需要在配置文件中加上`@NacosConfigurationProperties`注解,例如: ```java @Configuration @NacosConfigurationProperties(prefix = "your-config-id", dataId = "your-config-id", groupId = "your-group", autoRefreshed = true) public class MyConfig { private String configValue; public String getConfigValue() { return configValue; } public void setConfigValue(String configValue) { this.configValue = configValue; } } ``` 这样,在配置文件中修改配置信息时,应用程序会自动更新`MyConfig`类中的`configValue`属性,无需手动获取配置项的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值