Springboot集成nacos注册中心与配置中心心

之前使用过eureka+feign和zookeeper+dobbo组合组合方式,今年使用了nacos+feign调用。调用思路其实一样,只是使用的工具不一样,配置也有所区别,最近自己在集成nacos发现有一些需要注意的地方,分享一下。

微服务架构下,将冗杂的服务模块分开,同时带来的问题是服务间的调用大量增加,虽然feign给我们提供了指定url调用方式,但是也摒弃了微服务可扩展性的特点。所以通常情况下使用注册中心,提高服务可扩展性,即当服务承载压力过大时,多开一个实例即可实现服务扩展。

常见的注册中心:eureka、nacos、consul、zookeeper。本次是集成nacos注册中心,关于如何注册中心的比较会在另外的文章中进行说明。

nacos做为阿里开源项目,经过了很多项目验证,同时nacos支持配置中心,将配置文件进行管理,可以动态修改配置文件。下面是nacos官方生态图。

Nacos 全景图

Nacos注册拉取机制

image-20210413114858377.png

Nacos注册中心搭建

首先是nacos注册中心的搭建,此处指介绍nacos单机模式,nacos是支持集群模式,避免单节点情况下注册中心挂掉影响业务服务。

nacos官网:

https://nacos.io/zh-cn/docs/quick-start.html

nacos源码以及服务下载地址:

https://github.com/alibaba/nacos/releases

我这里使用的是1.2.1版本,下载好之后解压可以看到程序包。

在conf目录下application.properties文件中server.port=20014 可以配置nacos端口号,我这里是将端口号设置为20014。

bin目录下是启动文件,.cmd结尾的是windows启动和停止命令,.sh结尾的是linux中启动和停止脚本。在服务器单机启动脚本命令为:sh start.sh -m standalone ,这里主要是讲一个使用流程,集群配置在这里不再过多介绍。启动成功后在文件目录下生成logs文件夹,该文件夹中存放所有nacos日志,启动日志名称为: start.out ,启动成功可以在该日志中看到输出启动成功。

image-20210412153424724

启动成功后通过访问nacos页面可以看到Nacos管理页面,默认访问地址为http://ip:port/nacos,默认用户名密码都是nacos。

登录以后可以看到如下页面

image-20210412154321598

上图标记的目录是在服务注册上来以后可以看到的服务列表。

单机nacos搭建完成。

Nacos注册中心集成

依赖坐标

<!--引入nacos注册中心配置依赖坐标-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
   <version>2.2.1.RELEASE</version>
</dependency>

在启动类上加上@EnableDiscoveryClient注解

image-20201223150707565

yml文件配置(properties文件只是格式不同)

spring:
  application:
    name: demo
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.XX.XX:20014
        namespace: default
        group: default

nacos中通过设置空间和分组名称,系统服务进行隔离,不在一个空间或者分组下,是调用不到的。特别是在测试阶段,能够避免不同系统服务之间发生调用问题。

在上面配置中namespace表示工作空间,group表示分组。

配置项目启动之后,在nacos服务列表中并看不到服务列表,这是因为我们的工作空间是default,这个空间并没有创建,在菜单命名空间-新建命名规则,创建命名空间IDdefault,这个与配置文件中namespace值一样即可。

image-20210412155036289

返回服务列表目录中,可以看到内容页面左上角已经出现了我们创建的命名空间,在服务列表中,也出现了我们注册上来的服务。

image-20210412161242184

服务名对应spring.application.name的值,实例数标识当前服务只有一个实例,在集群状态下,通过部署两个项目实例,启动两个namespacegroup一致,在feign组件调用时,可以实现对两个服务的负载均衡。操作菜单下详情,点开可以看到当前注册上来的服务地址。

image-20210412162255685

到这里注册中心的功能已经实现。

Nacos配置中心集成

引入依赖

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   <version>2.2.3.RELEASE</version>
</dependency>

配置文件

spring:
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.32.12:20014
        namespace: default
        group: default
      config:
        server-addr: 192.168.32.12:20014
        # 定义配置文件类型
        file-extension: yml
        # 设置共享文件/通用配置
        #shared-dataids: bootstrap.yml
        # 自动刷新通用配置文件
        #refreshable-dataids: bootstrap.yml
        #refresh-enabled: true
        namespace: default
        group: default

testName: 1111
   

spring.profiles.active在有些版本中是spring.profiles.active,不生效时去掉s试下。

资源配置

选择菜单配置管理-配置列表,点击页面右上角**+**号图标

image-20210412173150805

在页面中新增配置信息

配置说明

​ Data ID:${prefix}-${spring.profile.active}.${file-extension}

prefix默认是spring.application.name的值,也可以通过设置spring.cloud.nacos.config.prefix的值来配置。

spring.profile.active对应上面配置文件中spring.profile.active的值。不配置时,格式会发生变化:${prefix}.${file-extension},不再有中间的-和后边的信息。

file-extension对应配置项 spring.cloud.nacos.config.file-extension的值,目前只支持propertiesyml格式。

​ Group: ${spring.cloud.nacos.config.group}

​ 对应配置中spring.cloud.nacos.config.group的值。

​ 配置格式:选择properties或者yml格式。配置相关信息之后点击发布。

image-20210412173447896

这个时候我们配置项就好了。

新建接口,在上面文件中设置了testName的值为1111,但是在配置中心的值为9999,通过简单接口获取该值,验证配置中心已经生效。

image-20210412175916216

image-20210412175839427

自动刷新

​ Nacos通过配置可以实现在启动状态下更新该值,无需重启项目。

​ 配置文件中将spring.cloud.nacos.config.refresh-enabled设置为true,启动自动刷新,在需要自动刷新的类上加上@RefreshScope注解,重启服务。

image-20210412180348610

重启完毕后在配置中心编辑该配置,修改该配置的值为7777,点击发布-确认发布。

image-20210412180651293

image-20210412180741658

在此调用该接口,会发现该接口的值已经变成配置中心刚刚发布的值,即已经实现nacos配置中心的自动刷新。

image-20210412180904420

确认发布。

在此调用该接口,会发现该接口的值已经变成配置中心刚刚发布的值,即已经实现nacos配置中心的自动刷新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值