Spring Cloud Alibaba Nacos服务注册中心,配置中心

地址

git地址:GitHub - alibaba/nacos
GitHub:spring-cloud-alibaba 内含示例文档
springcloud:Spring Cloud Alibaba
官网:Nacos Spring Cloud 快速开始

下载

最新版本: 2.2.1 (Mar 17th, 2023)
nacos-server-2.2.1.zip
解压得到 nacos 服务端

配置

参数默认值启止版本说明
nacos.core.auth.enabledfalse1.2.0 ~ latest是否开启鉴权功能
nacos.core.auth.system.typenacos1.2.0 ~ latest鉴权类型
nacos.core.auth.plugin.nacos.token.secret.keySecretKey0123456789~(2.2.0.1后无默认值)2.1.0 ~ latest默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险
nacos.core.auth.plugin.nacos.token.expire.seconds180002.1.0 ~ latest用户登陆临时accessToken的过期时间
nacos.core.auth.enable.userAgentAuthWhitefalse1.4.1 ~ latest是否使用useragent白名单,主要用于适配老版本升级,置为true时有安全风险
nacos.core.auth.server.identity.keyserverIdentity(2.2.1后无默认值)1.4.1 ~ latest用于替换useragent白名单的身份识别key,使用默认值有安全风险
nacos.core.auth.server.identity.valuesecurity(2.2.1后无默认值)1.4.1 ~ latest用于替换useragent白名单的身份识别value,使用默认值有安全风险
nacos.core.auth.default.token.secret.keySecretKey0123456789~1.2.0 ~ 2.0.4nacos.core.auth.plugin.nacos.token.secret.key
nacos.core.auth.default.token.expire.seconds180001.2.0 ~ 2.0.4nacos.core.auth.plugin.nacos.token.expire.seconds

根据conf/mysql-schema.sql 创建数据库 nacos_config,并生成对应的表,修改application.properties 新增以下配置

spring.datasource.platform=mysql

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

nacos.core.auth.plugin.nacos.token.secret.key 2.2.0.1后无默认值,必须要配置,否则会出现[[谷粒商城遇到的bug#启动报错]] 的bug

# 使用zxldenacosserverstartuplocaltest转换为base64
nacos.core.auth.plugin.nacos.token.secret.key=enhsZGVuYWNvc3NlcnZlcnN0YXJ0dXBsb2NhbHRlc3Q=

地址栏打开cmd,输入startup.cmd -m standalone启动
访问:Nacos本地环境
账号密码都是:nacos

作为服务注册

  1. 首先,修改 pom.xml 文件,引入 Nacos Discovery Starter。
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
    
  2. 在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址
     spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    
  3. 使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
     @SpringBootApplication
     @EnableDiscoveryClient
     public class ProviderApplication {
    
     	public static void main(String[] args) {
     		SpringApplication.run(ProviderApplication.class, args);
     	}
    
     	@RestController
     	class EchoController {
     		@GetMapping(value = "/echo/{string}")
     		public String echo(@PathVariable String string) {
     				return string;
     		}
     	}
     }
    

作为配置中心

新版本方式

官方Github示例文档:Nacos Config Example

  1. 修改application.yml:
spring:
  cloud:
    nacos:
      serverAddr: 127.0.0.1:8848
  config:
    import:
      - nacos:nacos-config-example.properties?refresh=true
  1. 无需引入spring-cloud-starter-bootstrap,无需创建bootstrap.properties

参考教程视频的方式

教程使用的是老版本,以下方式可以当作项目中升级版本可用的方式

  1. 引入依赖,需要额外引入spring-cloud-starter-bootstrap 否则不会生效
<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-bootstrap</artifactId>  
    <version>3.1.6</version>  
</dependency>
  1. 创建一个bootstrap.properties
spring.application.name=gulimall-coupon  
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
  1. 需要给配置中心默认添加一个数据集(Data Id)gulimall-coupon.properties,这里是默认规则
  2. 给数据集添加任何配置
  3. 动态获取配置 (如果配置中心和应用中配置相同项,优先使用配置中心,不然还有啥意义呢)
    1. @RefreshScope :动态获取并刷新配置
    2. @Value("${coupon.user.name}") :获取配置
@RestController  
@RefreshScope  # 动态获取并刷新配置
@RequestMapping("coupon/coupon")  
public class CouponController {
    @Value("${coupon.user.name}")  
    private String name;  
  
    @Value("${coupon.user.age}")  
    private Integer age;  
  
    @RequestMapping("/testNacosConfig")  
    public R testNacosConfig() {  
        return R.ok().put("name", name).put("age", age);  
    }
}

Nacos 配置中心进阶

命名空间

  1. 默认:public(保留空间):默认新增的所有配置都在public空间。
  2. 可以新建命名空间:开发(dev)、测试(test)、生产(prod)
  3. 每一个微服务之间互相隔离:优惠券(coupon)、会员(member)等
spring.cloud.nacos.config.namespace=指定命名空间的ID

在这里插入图片描述

在这里插入图片描述

配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级 别等配置项。

配置集ID

类似配置文件的文件名
Data ID: 文件名

配置分组

默认所有的配置集都属于:DEFAULT_GROUP
新增配置时可以修改为自定义的值:如:1111,618等
在这里插入图片描述

当然用微服务名作为命名空间时,不同组可以当作不同的环境,总之,根据实际需要进行配置,十分灵活。

同时加载多个配置集

微服务的任何配置信息,任何配置文件都能放在配置中心中

新版本的方式

  1. 新建coupon命名空间
  2. 将配置文件拆分为datasourse.yml、mybatis.yml、other.yml
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 分组均为dev
  2. 在application.yml中配置
spring:  
  application:  
    name: gulimall-coupon  
  cloud:  
    nacos:  
      server-addr: 127.0.0.1:8848  
      config:  
        namespace: ce9a99fa-c8ec-40a5-9688-adeefa739039  
        group: dev  
  config:  
    import:  
#      - nacos:gulimall-coupon.properties?refresh=true # 单个配置文件  
      - optional:nacos:datasourse.yml?refresh=true  
      - optional:nacos:mybatis.yml?refresh=true  
      - optional:nacos:other.yml?refresh=true  
#      - optional:nacos:mybatis.yml?group=group_02&refreshEnabled=false  
  
server:  
  port: 7000  
  
coupon:  
  user:  
    name: zhangsan  
    age: 18

移除bootstrap.properties之后的多版本配置参考:
Github Support spring.config.import

参考教程视频的方式

  1. 新建coupon命名空间
  2. 将配置文件拆分为datasourse.yml、mybatis.yml、other.yml
  3. 分组均为dev
  4. 在bootstrap.properties中配置
spring.application.name=gulimall-coupon  
spring.cloud.nacos.config.server-addr=127.0.0.1:8848  
spring.cloud.nacos.config.namespace=a3bc580a-a004-4c95-b967-a9a3f7493449 #指定命名空间的ID
# idea中可见该方式已被废弃@Deprecated
spring.cloud.nacos.config.ext-config[0].data-id=datasourse.yml  
spring.cloud.nacos.config.ext-config[0].group=dev  
spring.cloud.nacos.config.ext-config[0].refresh=true  
  
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml  
spring.cloud.nacos.config.ext-config[1].group=dev  
spring.cloud.nacos.config.ext-config[1].refresh=true  
  
spring.cloud.nacos.config.ext-config[2].data-id=other.yml  
spring.cloud.nacos.config.ext-config[2].group=dev  
spring.cloud.nacos.config.ext-config[2].refresh=true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值