SpringCloud Aliba-Nacos-从入门到学废【1】
作者:mmseoamin日期:2024-01-21

🥚今日鸡汤🥚

                          当你最倒霉地时候一定要扛住。

                                                           因为,那正是你运气该上升的时候。

                                                                                                 ——《一人之下》

SpringCloud Aliba-Nacos-从入门到学废【1】,第1张

目录

🧈1.Nacos介绍

🧂2.Nacos服务提供者注册

🥓3.Nacos服务消费者

🌭4.Nacos作为配置中心 

🍿5.命名空间+Group+Data  Id


1.Nacos介绍

  • Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。
  • 实现微服务架构中的服务注册与发现、动态配置管理、服务健康监测等功能。
  • Nacos就是注册中心+配置中心的组合
  • 替代Eureka做服务注册中心
  • 替代Config做服务配置中心

2.Nacos服务提供者注册

2.1.建工程

  • 1.在父工程下创建cloudalibaba-provider-payment9001
  • 2.注意jdk和maven版本号
  • 另外创建cloudalibaba-provider-payment9002

    2.2.加pom

    父工程添加pom:

                
                
                    com.alibaba.cloud
                    spring-cloud-alibaba-dependencies
                    2.2.0.RELEASE
                    pom
                    import
                

     子工程pom: 

         
            
                org.springframework.boot
                spring-boot-starter-web
            
            
                org.springframework.boot
                spring-boot-starter-actuator
            
            
                org.springframework.boot
                spring-boot-starter-test
            
            
                org.projectlombok
                lombok
            
            
            
                com.alibaba.cloud
                spring-cloud-starter-alibaba-nacos-discovery
            
         

    2.3.改yml

    server:
      port: 9002
    spring:
      application:
        name: ncaos-payment-provider
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
    management:
      endpoints:
        web:
          exposure:
            include: '*'

    2.4.主启动类

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

    2.5.测试 

    启动9001,9002,web端访问Nacos,说明访问成功

    SpringCloud Aliba-Nacos-从入门到学废【1】,第2张

    3.Nacos服务消费者

    3.1.建工程

    • 1.在父工程下创建cloudalibaba-consumer-nacos-order83作为消费者
    • 2.注意jdk和maven版本号

      3.2.加pom

       
          
              
                  org.springframework.boot
                  spring-boot-starter-web
              
              
                  org.springframework.boot
                  spring-boot-starter-actuator
              
              
                  org.springframework.boot
                  spring-boot-starter-test
              
              
                  org.projectlombok
                  lombok
              
              
                  org.example
                  cloud-api-commons
                  1.0-SNAPSHOT
              
              
              
                  com.alibaba.cloud
                  spring-cloud-starter-alibaba-nacos-discovery
              
          

      3.3.改yml

      server:
        port: 83
      spring:
        application:
          name: nacos-order-consumer
        cloud:
          nacos:
            discovery:
              server-addr: localhost:8848
      

      3.4.主启动类

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

      3.5添加配置类

      • 1.注入RestTemplate
      • 2.添加@LoadBalanced(负载均衡)
        @Configuration
        public class MyConfig {
            
            @Bean
            @LoadBalanced
            public RestTemplate getRestTemplate() {
                return new RestTemplate();
            }
            
        }

        3.6业务类

        • 1.定义常量
        • 2.引入restTemplate
        • 3.直接调用
          @RestController
          public class OrderNacosController {
              private static final String SERVER_URL="http://nacos-payment-provider";
              @Autowired
              private RestTemplate restTemplate;
              @GetMapping("/consumer/order/{id}")
              public String getPayment(@PathVariable("id")Integer id){
                  return restTemplate.getForObject(SERVER_URL+"/payment/nacos/"+id,String.class);
              }
          }

          3.7测试

          • 1.浏览器访问Nacos客户端,查看服务列表

            SpringCloud Aliba-Nacos-从入门到学废【1】,第3张

            • 2.浏览器访问83消费端 

              SpringCloud Aliba-Nacos-从入门到学废【1】,第4张

              4.Nacos作为配置中心 

              4.1.建工程

              • 1.在父工程下创建cloudalibaba-config-nacos-client3377
              • 2.注意jdk和maven版本

                4.2.加pom

                     
                        
                            org.springframework.boot
                            spring-boot-starter-web
                        
                        
                            org.springframework.boot
                            spring-boot-starter-actuator
                        
                        
                            org.springframework.boot
                            spring-boot-starter-test
                        
                        
                            org.projectlombok
                            lombok
                        
                        
                            org.example
                            cloud-api-commons
                            1.0-SNAPSHOT
                        
                        
                        
                            com.alibaba.cloud
                            spring-cloud-starter-alibaba-nacos-discovery
                        
                        
                        
                            com.alibaba.cloud
                            spring-cloud-starter-alibaba-nacos-config
                        
                    

                4.3.改yml

                1.要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

                2.springboot中配置文件的加载是存在优先级顺序的, bootstrap优先级高于application

                • bootstrap.yml: 
                  server:
                    port: 3377
                  spring:
                    application:
                      name: nacos-config-client
                    cloud:
                      nacos:
                        discovery:
                          server-addr: localhost:8848 #Nacos注册中心地址
                        config:
                          server-addr: localhost:8848 #Nacos作为配置中心地址
                          file-extension: yml   #指定yml格式的配置
                  #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
                  #nacos-config-client-dev.yml
                  • application.yml 
                    spring:
                      profiles:
                        active: dev #表示开发环境

                    4.4Nacos新增配置 

                    根据公式,配置Data ID

                    ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

                    SpringCloud Aliba-Nacos-从入门到学废【1】,第5张

                    4.5.主启动类

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

                    4.6业务类

                    @RestController
                    @RefreshScope//保持动态刷新
                    public class ConfigClientController {
                        @Value("${config.info}")
                        private String configInfo;
                        @GetMapping("/config/info")
                        public String getConfigInfo(){
                            return configInfo;
                        }
                    }

                    4.7测试

                    浏览器访问controller接口

                    SpringCloud Aliba-Nacos-从入门到学废【1】,第6张

                    与Nacos配置里一样,说明成功~ 

                    5.命名空间+Group+Data  Id

                    5.1三者关系

                    这三者的关系类似于Java里面的package名和类名,最外层的Namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象

                    5.2默认情况

                    Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT

                     

                    SpringCloud Aliba-Nacos-从入门到学废【1】,第7张

                    5.3Data Id 方案 

                    • 1.Nacos测试新增

                      SpringCloud Aliba-Nacos-从入门到学废【1】,第8张

                      • 2.application.yml配置 
                        spring:
                          profiles:
                            #active: dev #表示开发环境
                            active: test #表示测试环境
                        •  3.测试重启

                          SpringCloud Aliba-Nacos-从入门到学废【1】,第9张

                          5.4Group方案 

                          • 1.Navos创建相同的DataID,但GROIP不同

                            SpringCloud Aliba-Nacos-从入门到学废【1】,第10张

                            • 2.bootstrap添加group配置 

                              SpringCloud Aliba-Nacos-从入门到学废【1】,第11张

                              • 3.重启测试 

                                SpringCloud Aliba-Nacos-从入门到学废【1】,第12张

                                5.5Namespace方案 

                                • 1.查看命名空间

                                  SpringCloud Aliba-Nacos-从入门到学废【1】,第13张

                                  • 2.新增命名空间 

                                    SpringCloud Aliba-Nacos-从入门到学废【1】,第14张

                                    • 3.切换命名空间

                                      SpringCloud Aliba-Nacos-从入门到学废【1】,第15张

                                      • 4.bootstrap.yml配置 
                                        server:
                                          port: 3377
                                        spring:
                                          application:
                                            name: nacos-config-client
                                          cloud:
                                            nacos:
                                              discovery:
                                                server-addr: localhost:8848 #Nacos注册中心地址
                                              config:
                                                server-addr: localhost:8848 #Nacos作为配置中心地址
                                                file-extension: yml   #指定yml格式的配置
                                                group: TEST_GROUP  #分组
                                                namespace: 277386e3-b431-4b12-a73e-222f61304889 #命名空间