Nacos--服务注册、配置中心

  • Nacos下载和安装:

  1.  Release 1.4.3 (Jan 27, 2022) · alibaba/nacos · GitHub      👈下载的链接,这里下载windows版本进行学习
  2. 下载后解压,运行startup.cmd,注意单机版的启动命令,默认是集群
  3. 此时可以访问localhost:8848/nacos访问控制台,默认用户名密码都是nacos
  •  Nacos服务注册:

  • 服务提供者注册:

  1. 父工程导入POM
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>2.1.0.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
  2. 子工程导入POM

            <!--服务注册-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.2.1.RELEASE</version>
            </dependency>
    
  3. 写子工程YML

    server:
      port: 9001
    
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            #        配置nacos的地址
            server-addr: localhost:8848
    
    
    #暴露端点
    management:
      endpoints:
        web:
          exposure:
            include: "*"
  4. 主启动

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosPaymentProviderMain9001 {
        public static void main(String[] args) {
            SpringApplication.run(NacosPaymentProviderMain9001.class,args);
        }
    }
    
  5. controller

    @RestController
    public class NacosPaymentController {
        @Value("${server.port}")
        private String serverPort;
    
        @GetMapping("/nacos/serverport/{id}")
        public String getServerPort(@PathVariable("id") Integer id){
            return "nacos registry,serverport:"+serverPort+"\tid是"+id;
        }
    }
    
  6. 启动后,注册成功

  7. 一个微服务多端口号启动的方法

     

  8. 启动后,会产生两个实例


  • 服务消费者的注册和负载:

  1. 消费者端导入POM

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.2.1.RELEASE</version>
            </dependency>
  2. 写YML

    server:
      port: 8085
    
    spring:
      application:
        name: nacos-order-consumer
      cloud:
        nacos:
          discovery:
            #        配置nacos的地址
            server-addr: localhost:8848
    
    #消费者将要去访问的微服务名称
    service-url:
      nacos-user-service: http://nacos-payment-provider
  3. 主启动:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class OrderNacosMain8085 {
        public static void main(String[] args) {
            SpringApplication.run(OrderNacosMain8085.class,args);
        }
    }
    
  4. config:(因为nacos discovery自带ribbon

    /**
     * nacos discovery 自带ribbon
     */
    @Configuration
    public class ApplicationContextConfig {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    
  5. controller:

    @RestController
    public class OrderNacosController {
    
        @Value("${service-url.nacos-user-service}")
    //不可以加static修饰,不然只会加载一次
        private String SERVER_URL;
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/cosumer/nacos/serverport/{id}")
        public String getProviderServerPort(@PathVariable("id") Integer id) {
            String result = restTemplate.getForObject(SERVER_URL + "/nacos/serverport" + id, String.class);
            return result;
        }
    }
  6. 测试发现,是轮询的负载均衡;


  • Nacos配置中心:

  • 基础配置:
  1. 新建module
  2. 导入POM
            <!--服务注册-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.2.1.RELEASE</version>
            </dependency>
            <!-- 配置中心-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
  3. bootstrap.yml

    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
    #      注册进nacos
          discovery:
            server-addr: localhost:8848
          config:
            #        nacos作为配置中心的地址
            server-addr: localhost:8848
            #        指定yaml格式的配置
            file-extension: yml
  4. 建application.yml

    spring:
      profiles:
    #    表示开发环境
        active: dev
  5. 主启动

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ConfigNacosMain3377 {
        public static void main(String[] args) {
            SpringApplication.run(ConfigNacosMain3377.class,args);
        }
    }
    
  6. controller

    @RestController
    //支持nacos动态刷新
    @RefreshScope
    public class ConfigNacosController {
    
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/config/info")
        public String getConfigInfo(){
            return configInfo;
        }
    
    }
    
  7. 在nacos中进行配置:

  • 通过dataId进行匹配,格式为:${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

  • 启动后可以获取。 

  • 此时修改nacos中的配置文件,接口访问时会自动刷新。 


  • 分类配置:
  • Namespace, Group, Cluster, Instance
  1. group:创建属于dev_group和test_group的配置配置文件
  2. 在配置文件中创建一个group:
      cloud:
        nacos:
          #      注册进nacos
          discovery:
            server-addr: localhost:8848
          config:
            #        nacos作为配置中心的地址
            server-addr: localhost:8848
            #        指定yaml格式的配置
            file-extension: yml
            group: TEST_GROUP
    
            #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
            
    spring:
      profiles:
        active: info
  3. 通过这个配置就可以获取到TEST_GROUP中的配置信息

  4. namespace:创建dev和test的命名空间
  5. 在dev的namespace下面创建三个group
  6. 在配置文件中,配置namespace的id:
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          #      注册进nacos
          discovery:
            server-addr: localhost:8848
          config:
            #        nacos作为配置中心的地址
            server-addr: localhost:8848
            #        指定yaml格式的配置
            file-extension: yml
            group: TEST_GROUP
            namespace: c62a89d6-96d9-40d4-a973-c3e4c77d4e3e

  • nacos集群: 

  1. 切换mysql数据库,找到执行脚本,在mysql中执行
  2. 在该配置文件中进行配置:
  3. 重启nacos,此时连接上了mysql数据库,所以之前的数据已经不存在了
  4. 安装linux版本的nacos
  5. 集群的配置:
  • 修改nacos脚本,从而修改端口;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溜溜吃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值