nacos学习

配置 xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    <relativePath/>
</parent>
<properties>
    <spring-cloud.version>Finchley.SR2</spring-cloud.version>
    <spring-cloud-alibaba.version>0.2.0.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

https://www.bilibili.com/video/BV1LQ4y127n4?p=18

Nacos 可以用来做服务注册和发现

多个服务要互相调用,就可以通过nacos 去找到其他的服务地址,然后调用这个服务。

nacos 和 eureka 的共同点

共同点

  1. 都支持服务注册和服务拉取
  2. 都支持服务提供者心跳方式做健康检查

区别

  1. nacos 支持服务端主动检测提供者状态,临时实例使用心跳机制,非临时使用主动检测模式
  2. 临时实例心跳不正常会被剔除,费临时实例不会剔除
  3. nacos支持服务列表变更消息推送模式,服务列表更新及时
  4. nacos默认采用 AP,当集群存在非临时实例,采用CP;Eureka 采用AP方式

配置的热更新

Nacos配置更新后,微服务可以实现热更新,方式:

  1. 使用@Value注解注入,结合 @RefreshScope 注解
  2. 通过 @ConfigurationProperties注入,自动刷新
  3. 注意事项
    1. 不是所有的配置都适合放到配置中心,维护起来麻烦
    2. 建议将一些关键参数,需要运行时候动态调整的放入配置中心【一般是自动配置】

多配置共享

微服务启动时会从 nacos读取多个 配置文件

  • [spring.application.name]-[spring.profiles.active].yaml

    • 例如userservice-dev.yaml
  • [spring.application.name].yaml

    • 例如 userservice.yaml
  • 配置文件优先级

    • 服务名-profile.yaml > 服务名.yaml > 本地配置

Nacos集群搭建

多个 nacos node 节点 要保证数据的一致性,就要从 mysql数据库里面读取数据

image-20211113130913374