关于nacos服务端的使用可以参考Spring Cloud Alibaba专题–2.2.5.RELEASE–Nacos作为配置中心的使用(五),这里就不在赘述了

一:Nacos服务的分级存储模型

在这里插入图片描述

  • 命名空间(namespace):

命名空间属于Nacos顶层的结构,用于进行租户级别的隔离,我们最常用的就是不同环境比如测试环境,线上环境进行隔离。

  • 服务(Service):

服务的概念就和我们平常的微服务一一对应,比如订单服务,物流服务等等。一个命名空间下可以有多个Service,不同的命名空间可以有相同的Service,比如测试环境和线上环境都可以有订单服务。

  • 虚拟集群:

一个服务下所有的机器组成一个集群,在Nacos中还可以对集群根据需要进行进一步划分成虚拟集群。

  • 实例:

粗略一点理解就是一台机器或者一个虚拟机就是一个实例,细粒一点理解就是一个或多个服务的具有可访问网络地址(IP:Port)的进程。

二:Spring Cloud Alibaba集成Nacos作为注册中心

1.引入版本控制pom

 <properties>
        <java.version>1.8</java.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
        <dubbo.version>2.7.8</dubbo.version>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
    </properties>
 <dependencyManagement>
        <dependencies>
            <!--spring-cloud-alibaba dependencies pom 依赖包-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring-cloud-alibaba dependencies pom 依赖包-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring-cloud dependencies pom 依赖包-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
</dependencyManagement>

2.引入Nacos注册中心相关依赖

 <dependencies>
        <!--spring-cloud-alibaba nacos注册中心驱动包-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--spring-boot 监控端点包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
         <!--spring-mvc 依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
   		 <!--spring-test 单元测试依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

3.系统配置

#nacos注册中心

#注册中心地址默认值localhost:8848
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

#注册到注册中心时的名称 默认值 ${spring.application.name} 这里不配置了
#spring.cloud.nacos.discovery.service=

#户端心跳频率 默认服务提供者每5s向服务端发送一次心跳
spring.cloud.nacos.discovery.heart-beat-interval=1000

#注册中心心跳超时时间 默认30s超时
spring.cloud.nacos.discovery.heart-beat-timeout=30000

#注册中心掉线清理ip 默认15s链接不上(无论主动下线还是被动连接不上)删除本地ip列表
spring.cloud.nacos.discovery.ip-delete-timeout=5000

#是否使用临时节点 默认为:true 此时nacos使用AP模式运行(无中心),如果更改为false则使用CP模式运行(有中心)
spring.cloud.nacos.discovery.ephemeral=true

4.启动应用

在这里插入图片描述
已经成功注册到Nacos服务列表

4.关闭应用

点击关闭,立刻去刷新服务器
在这里插入图片描述
服务已经删除

三:使用namespace实现环境隔离

无论是配置中心还是注册中心,都是基于相同的Naming模块,这部分参考Spring Cloud Alibaba专题–2.2.5.RELEASE–Nacos作为配置中心的使用(五)-使用namespace实现环境隔离

四:基于namespace环境隔离切换问题

参考Spring Cloud Alibaba专题–2.2.5.RELEASE–Nacos作为配置中心的使用(五)-基于namespace环境隔离切换问题

五:Nacos的注册中心监控端点的使用

关于基本的监控端点介绍参考Spring Cloud Alibaba专题–2.2.5.RELEASE–Nacos作为配置中心的使用(五)-Nacos的配置监控端点的使用

访问http://localhost:8080/actuator
在这里插入图片描述
点击注册中心端点地址
在这里插入图片描述

六:Nacos秒级的服务上下线感知

节点的订阅在不同的注册中心中都有不同的实现,一般的套路分为两种轮训和推送。

推送是指当订阅的节点发生更新的时候会主动向订阅方进行推送,我们的ZK就是推送的实现方式,客户端和服务端会建立一个TCP长连接,客户端会注册一个watcher,然后当有数据更新的时候,服务端会通过长连接进行推送。通过这种建立长连接的模式,会严重消耗服务端的资源,所以当watcher比较多,并且当更新频繁的时候,Zookeeper的性能会非常低,甚至挂掉。

轮训是指我们订阅的节点主动定时获取服务端节点的信息,然后再本地去做一个比对,如果有改变就会做一些更新。在Consul中也有一个watcher机制,但和ZK不一样的是,他是通过Http长轮询去实现的,Consul服务端会对请求的url中是否包含wait参数进行立即返回,还是先挂起等待指定wait时间内如果服务有变化在返回。使用轮训的性能可能较高但是实时性就可能不是太好。

在Nacos中,结合了这两个思想,既提供了轮训又提供了主动推送
在这里插入图片描述
由于时间仓促,整个链路并没有彻底捋通,如果存在错误还请指正。如有对该问题有其他见解的,欢迎互相交流学习。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐