5.Nacos

什么是Nacos

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理的平台。注册中心+配置中心的组合,支持CP和AP两种模式 默认AP。

安装并运行Nacos

从官网下载Nacos并运行,进入bin文件夹通过startup.cmd -m standalone命令单机(如果不单机启动默认是集群,可能会报错)启动,启动成功后访问http://localhost:8848/nacos/#/login,账号密码都是nacos
在这里插入图片描述

Nacos作为服务注册中心

1.父pom文件中指定Spring Cloud Alibaba的版本

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.子pom引入Nacos的依赖

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

3.yml文件添加Nacos的配置

server.port=8081
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 
management.endpoints.web.exposure.include=*

4.主启动类添加注解@EnableDiscoveryClient
5.注册成功后Nacos可以看到服务
在这里插入图片描述

Nacos是支持负载均衡的

可以看到Nacos里面添加了ribbon,而ribbon是支持负载均衡的,可以使用RestTemplate进行访问http://服务名/接口地址
在这里插入图片描述

Nacos作为配置中心

Nocos和SpringCloud Config一样,项目启动的时候要先保证从配置中心拉取配置,拉取配置后项目才能正常启动。
在Spring Boot中bootstrap.yml优先于application.yml
1.添加依赖

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

2.主启动类添加注解@EnableDiscoveryClient
3.添加bootstrap.yml

server:
  port: 3377
spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos作为服务注册中心
      config:
        server-addr: localhost:8848 #Nacos作为配置中心
        file-extension: yaml #指定yaml格式的配置
  application:
    name: nacos-config-client

4.添加application.yml

spring:
  profiles:
    active: dev

5.在Nacos中进行配置文件配置
在这里插入图片描述
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
所以我这里的Data ID为:nacos-config-client-dev.yaml
在这里插入图片描述
6.Congroller添加注解@RefreshScope开启配置自动刷新功能,不需要重启服务,只要修改配置 服务可以自动读取修改后的值。最后启动 通过接口读取config.info
在这里插入图片描述

Namespace、Group、Date ID三者的关系

Namespace(默认:public)>Group(默认:Defualut_Group)>Date Id
以上三者加起来才能找到对应的配置文件,例如Date ID完全一样 但是分组或命名空间可以不同。

如果需要指定分组、命名空间、和Date ID:

# 指定分组
spring.cloud.nacos.config.group=DEVELOP_GROUP
# 指定命名空间
spring.cloud.nacos.config.namespace=publice
# 指定配置名称 
spring.cloud.nacos.config.name=nacos-config-client

dataId 是 Nacos 中用于唯一标识一个配置项的键。当 Spring Cloud 应用启动时,它会根据 spring.cloud.nacos.config.name 的值以及其他可能的配置(如 spring.profiles.active、spring.cloud.nacos.config.group、spring.cloud.nacos.config.file-extension 等)来构建完整的 dataId,并从 Nacos 服务器中获取相应的配置。
例如,如果你设置 spring.cloud.nacos.config.name=myapp,并且没有设置 spring.profiles.active(或者设置为默认的 default),那么默认的 dataId 将是 myapp。如果还设置了 spring.cloud.nacos.config.file-extension=yaml,那么 dataId 将变为 myapp.yaml。
如果你使用了 Spring Profiles(Spring 的环境配置功能),spring.profiles.active 的值也会被加入到 dataId 中,通常作为后缀。例如,如果 spring.profiles.active=dev,那么 dataId 可能会是 myapp-dev.yaml。

pring.cloud.nacos.config.shared-configs这个属性用于指定额外的共享配置。shared-configs 是一个数组,你可以在其中添加多个共享配置。每个共享配置都需要一个 dataId 来标识。通过这种方式,你可以从 Nacos 中获取多个不同的配置,并将它们合并到同一个 Spring 应用中。

	#应用配置
	spring.cloud.nacos.config.shared-configs[0].data-id=xxx
	spring.cloud.nacos.config.shared-configs[0].group=xxx
	spring.cloud.nacos.config.shared-configs[0].refresh=true

Nacos集群和配置持久化

Nacos支持三种部署模式
1.单机模式 - 用于测试和单机使用
2.集群模式 - 用于生产环境,确保高可用。
3.多集群模式 - 用于多数据中心场景。

默认的Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySql的存储。

Nacos持久化配置切换

Nacos中使用了内嵌数据库(derby)

Windows下Nacos嵌入式数据库derby到mysql切换配置步骤:
1.nacos-server-2.0.2\nacos\conf找到nacos-mysql.sql脚本文件,创建nacos需要的数据库
2.nacos-server-2.0.2\nacos\conf找到application.properties配置文件添加mysql配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

3.重启Nacos

Linux版Nacos+MySql构建生产环境配置

官网推荐如图,中间的一层可以使用Nginx做负载
在这里插入图片描述
1下载Linux版本Nacos解压安装

// 下载
wget https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz
// 解压
tar -zxvf nacos-server-2.1.0.tar.gz

2.在mysql创建数据库,将/nacos/conf/nacos-mysql.sql中的脚本执行,创建nacos需要的数据库表
3.修改/nacos/conf/application.properties配置文件添加mysql配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

4.复制/nacos/conf/cluster.conf.examplecluster.conf并进行编辑用来整理集群IP和端口,以下IP必须为真实网卡IP,也就是用hostname -i显示的IP。下面的内容每个Nacos实例都需要配置。如果是本地启动三个实例,端口在nacos\conf\application.properties中修改

127.168.0.1:8848
127.168.0.2:8848
127.168.0.3:8848

5.启动Nacos sh startup.sh
6.Nginx 配置做转发和负载

`spring.cloud.nacos.discovery` 是 Spring Cloud Alibaba Nacos Discovery 的配置属性,用于指定 Nacos 注册中心的。以下是全部的及示例: ```properties # Nacos 服务器地址,多个地址用逗号分隔 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # 命名空间 ID spring.cloud.nacos.discovery.namespace= # Nacos 访问协议 spring.cloud.nacos.discovery.protocol=http # 应用程序名称 spring.cloud.nacos.discovery.service=example-service # 应用程序的 IP 地址 spring.cloud.nacos.discovery.ip=192.168.1.100 # 应用程序的端口号 spring.cloud.nacos.discovery.port=8080 # 健康检查 URL 路径 spring.cloud.nacos.discovery.health-check-url=/health # 健康检查间隔时间,单位为秒 spring.cloud.nacos.discovery.heartbeat-interval=5 # 注册实例的权重,用于负载均衡,默认值为 1 spring.cloud.nacos.discovery.weight=1 # 集群名称 spring.cloud.nacos.discovery.cluster-name= # 分组名称 spring.cloud.nacos.discovery.group-name= # 服务的元数据,可以用于自定义扩展 spring.cloud.nacos.discovery.metadata.mykey=myvalue ``` 示例: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.namespace= spring.cloud.nacos.discovery.protocol=http spring.cloud.nacos.discovery.service=example-service spring.cloud.nacos.discovery.ip=192.168.1.100 spring.cloud.nacos.discovery.port=8080 spring.cloud.nacos.discovery.health-check-url=/health spring.cloud.nacos.discovery.heartbeat-interval=5 spring.cloud.nacos.discovery.weight=1 spring.cloud.nacos.discovery.cluster-name= spring.cloud.nacos.discovery.group-name= spring.cloud.nacos.discovery.metadata.mykey=myvalue ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值