文章目录
前言
Nacos官方介绍:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。
一、Nacos注册中心&配置中心
治理中心(注册中心):在一个微服务项目中,不同的服务之间做着不同的事情,服务和服务之间会涉及到调用,那如何去管理,这里可以用到注册中心,当服务(Service)启动时,将自己的一个实例,注册到注册中心上,注册中心可以做服务发现,服务检测、心跳机制。nacos服务器就是治理中心,它里面要注册所有的微服务,生成一个服务列表。市面上的服务注册中心有:Zookeeper、Eureka、Nacos、Consul等。
服务注册:nacos客户端要连接注册中心,将自己的信息注册到服务列表中,自己的信息包括:application.name、IP、port
服务发现:每个客户机会从nacos治理中心下载服务列表,从服务列表中获取其他微服务连接信息(IP和Port)。后续调用其他服务的时候只需要用一个服务名调用远程的服务,而不是用ip地址去调用。
心跳机制:客户机会每隔5秒连接一次注册中心,注册中心开启线程检查每个服务最后一次连接的时长是否超过30秒,如果超过就会从服务列表中把相关服务移除。
配置中心:各个微服务散落在各个服务器上,修改配置文件的时候,需要找到每个服务器去修改,修改完配置文件后,需要重启服务器让配置生效。维护的时间成本高,效率低下。配置中心可以解决这些问题:
配置中心可以把所有的微服务的配置信息统一在一个地方进行管理,这样修改的时候就不用到各个服务器上去找配置文件了,并且修改完会自动刷新生效。统一管理,不用再每个项目中去找配置文件了。并且修改完毕后,不用重启服务,配置项自动生效。
二、作为配置中心
1.首先配置nacos-config依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在nacos添加配置文件
添加配置文件注意四部分:namespace、group、dataid及文件扩展名。
namespace:命名空间,项目的运行环境。
group: 项目名
Dataid: 包括三部分:服务名、环境名、扩展名,举例:content-service-dev.yaml配置文件 由(content-service)-(dev). (yaml)三部分组成。
content-service:第一部分,它是在application.yaml中配置的应用名,即spring.application.name的值。
dev:第二部分,它是环境名,通过spring.profiles.active指定,
Yaml: 第三部分,它是配置文件 的后缀,目前nacos支持properties、yaml等格式类型。
nacos中的配置文件:

项目中的配置(yaml):
spring:
application:
name: content-service
profiles:
active: dev
springboot在启动的时候会优先读取bootstrap配置文件,启动到后期才会读取application配置文件。那在项目启动初期,我们就需要springboot知道项目的配置信息在配置中心的哪个文件里面。所以我们需要把配置中心的配置信息配置到bootstrap文件里面。bootstrap文件的写法给application一致。也可以是properties文件也可以是yml文件。如果bootstrap和application里面都配置有相同的配置项,application会把bootstrap里面的覆盖掉。
3.配置优先级

引入配置文件的形式有:
1、以项目应用名方式引入
2、以扩展配置文件方式引入
3、以共享配置文件 方式引入
4、本地配置文件
各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件 > 共享配置文件 > 本地配置文件。
如果想让本地最优先,可以在nacos配置文件 中配置如下即可实现:
#配置本地优先
spring:
cloud:
config:
override-none: true
三、作为注册中心
1.首先配置nacos-discovery依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置注册地址
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
- data-id: freemarker-config-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: feign-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: redis-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
profiles:
active: dev
Nacos 提供了两种服务类型供用户注册实例时选择:
临时实例:只是临时存在于注册中心中,会在服务下线或不可用时被注册中心剔除,临时实例会与注册中心保持心跳,注册中心会在⼀段时间没有收到来自客户端的心跳后会将实例设置为不健康,然后在⼀段时间后进行剔除。
永久实例:在被删除之前会永久的存在于注册中心,且有可能并不知道注册中心存在,不会主动向注册中心上报心跳,需要注册中心主动进行探活。
可以通过 spring.cloud.nacos.discovery.ephemeral: true进行设置。
1364

被折叠的 条评论
为什么被折叠?



