• 二、nacos注册中心配置与应用


    一、Nacos注册中心配置

    Nacos项目没有很明确的服务端与消费端;如果两个服务都注册到Nacos注册中心,两个服务可以相互调用;服务注册的主要代码与配置如下:
    在父项目的pom.xml中加上依赖版本号锁定

    <parent>
    	<groupId>org.springframework.bootgroupId>
    	<artifactId>spring-boot-starter-parentartifactId>
    	<version>2.3.12.RELEASEversion>
    parent>
    <properties>
            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
            
            <spring-cloud.version>Hoxton.SR8spring-cloud.version>
            <spring-cloud-alibaba.version>2.2.3.RELEASEspring-cloud-alibaba.version>
    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloudgroupId>
                    <artifactId>spring-cloud-dependenciesartifactId>
                    <version>${spring-cloud.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
                <dependency>
                    <groupId>com.alibaba.cloudgroupId>
                    <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                    <version>${spring-cloud-alibaba.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
    	<dependencies>
    <dependencyManagement>
    
    • 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
    • 29

    在项目的pom.xml文件中加上依赖

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
    	<groupId>com.alibaba.cloudgroupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    yaml配置文件 bootstrap.yml

    server:
      port: 8088
    spring:
      application:
        name: orderservice #服务名,在注册中心显示的名字
      cloud:
        nacos:
          server-addr: nacos:8848 # nacos服务地址
            discovery:
              username: nacos #nacos登录名
              password: nacos #naocs密码
              namespace: dev #命名空间,可以为空,注意这里填写的是命名空间的id 而不是名字,默认public
          
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    启动类

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    
    @SpringBootApplication(scanBasePackages = { "com.eakom","com.basic.eakom"})
    @EnableDiscoveryClient
    @EnableFeignClients(basePackages = {"com.eakom","com.basic.eakom"})
    public class Application {
    	public static void main(String[] args) throws Exception {
    		SpringApplication.run(Application .class, args);
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    项目启动后,在nacos的服务管理下服务列表中可以看到相关的服务

    二、Nacos权重配置与上下架

    在nacos服务管理下的服务列表中可以看到服务集群情况,点详情可以查看每个节点详情;
    1.nacos选择节点时默认情况下NacosRule是同集群内随机挑选,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。可以在点击编辑,即可修改权重,权重范围 0-1;注意:如果权重修改为0,则该实例永远不会被访问;
    2.可以对节点进行上下架,节点下架后,该实例永远不会被访问;

    三、Nacos环境隔离(命名空间)

    Nacos提供了namespace来实现环境隔离功能。nacos中可以有多个namespace,不同的namespace之间相互隔离,不同的namespace之间相互不可见;
    在nacos命名空间菜单下可以创建相关的命名空间

    四、服务分级存储模型

    在这里插入图片描述
    Nacos注册可以设置分级存储模型;服务调用尽可能选择本地集群的服务,跨集群调用延迟较高;本地集群不可访问时,再去访问其它集群。

    设置配置如下:

    spring:
      cloud:
        nacos:
          server-addr: nacos:8848 # nacos服务地址
            discovery:
              cluster-name: GZ #配置集群名称,也就是机房位置,广州
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    配置后,在服务列表或详情中可以看到具体的集群,如果不配置,默认DEFAULT集群。

    五、Nacos与Eureka的区别

    Nacos的服务实例分为两种l类型:
    临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
    非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
    配置一个服务实例为永久实例:

    spring:
      cloud:
        nacos:
          discovery:
            ephemeral: false # 设置为非临时实例
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:
    Nacos与eureka的共同点

    • 都支持服务注册和服务拉取
    • 都支持服务提供者心跳方式做健康检测

    Nacos与Eureka的区别

    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
  • 相关阅读:
    因为我的一次疏忽而带来的golang1.23新特性
    Spring Boot原理分析(四):声明式事务
    低空经济火爆:无人机培训机构工作开展详解
    神经网络的三种训练方法,神经网络训练速度
    CompletableFuture异步任务编排
    Java do while循环语句如何使用呢?
    书评 - 人月神话(纪念典藏版)
    数据指标体系建设思考(二)
    【C++】模板基础 + STL
    服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例
  • 原文地址:https://blog.csdn.net/eakom/article/details/126610832