• nacos入门案例Demo


    创建父工程cloud-demo(maven

    版本确定:
    nacos:1.4.1
    springcloud-alibaba:2.2.5 RELEASE
    springcloud: Hoxton.SR8
    springboot: 2.3.2.RELEASE

    在pom.xml添加相关版本管理

      
            org.springframework.boot</groupId>
            spring-boot-starter-parent</artifactId>
            2.3.2.RELEASE</version>
            </relativePath>
        </parent>
        
          .build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            .reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            .version>1.8</java.version>
    
        </properties>
        
            
                
                    com.alibaba.cloud</groupId>
                    spring-cloud-alibaba-dependencies</artifactId>
                    2.2.5.RELEASE</version>
                    <type>pom</type>
                    import</scope>
                </dependency>
                
                    org.springframework.cloud</groupId>
                    spring-cloud-dependencies</artifactId>
                    Hoxton.SR8</version>
                    <type>pom</type>
                    import</scope>
                </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
    • 30

    服务提供者

    在父工程中创建一个模块cloud-goods(maven)
    添加依赖:

     
    <!--       web场景依赖-->
           
               org.springframework.boot</groupId>
               spring-boot-starter-web</artifactId>
    
           </dependency>
    <!--       端点控制依赖-->
           
               org.springframework.boot</groupId>
               spring-boot-starter-actuator</artifactId>
           </dependency>
           <!--nacos场景依赖-->
           
               com.alibaba.cloud</groupId>
               spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    
           </dependency>
       </dependencies>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    创建核心配置文件:src/main/resources/application.yml

    spring:
      application:
        name: cloud-goods   #服务名称 必须有 保证唯一
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #指定nocas-server的地址
            username: nacos
            password: nacos
    server:
      port: 9001
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在java文件夹中创建springboot入口类com.qf.GoodsApp
    一定要加@EnableDiscoveryClient

    @SpringBootApplication
    @EnableDiscoveryClient //开启服务注册与发现功能
    public class GoodsApp {
        public static void main(String[] args) {
            SpringApplication.run(GoodsApp.class,args);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    启动springboot后,会在nacos发现这个服务
    在这里插入图片描述

    创建实体类
    创建新module cloud-entity(maven) 实体类
    依赖:

    
            
                org.projectlombok</groupId>
                lombok</artifactId>
            </dependency>
        </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建实体类Goods
    在这里插入图片描述
    在cloud-goods中引入实体类依赖:
    在这里插入图片描述
    写一个简单的controller
    在这里插入图片描述

    服务消费者

    在父工程创建新的module cloud-order(maven) 订单

    pom.xml

     
            cloud-demo</artifactId>
            com.qf</groupId>
            1.0-SNAPSHOT</version>
        </parent>
        4.0.0</modelVersion>
    
        cloud-goods</artifactId>
       
    <!--       web场景依赖-->
           
               org.springframework.boot</groupId>
               spring-boot-starter-web</artifactId>
    
           </dependency>
    <!--       端点控制依赖-->
           
               org.springframework.boot</groupId>
               spring-boot-starter-actuator</artifactId>
           </dependency>
           <!--nacos场景依赖-->
           
               com.alibaba.cloud</groupId>
               spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    
           </dependency>
           
               com.qf</groupId>
               cloud-entity</artifactId>
               1.0-SNAPSHOT</version>
           </dependency>
           
               com.qf</groupId>
               cloud-entity</artifactId>
               1.0-SNAPSHOT</version>
               compile</scope>
           </dependency>
       </dependencies>
    
    
    </project>
    
    • 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
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    application.yml:

    spring:
      application:
        name: cloud-order   #服务名称 必须有 保证唯一
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #指定nocas-server的地址
            username: nacos
            password: nacos
    server:
      port: 9002
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    OrderApp:
    在这里插入图片描述
    controller:
    在这里插入图片描述
    controller中save保存订单方法 需要发送http请求获取cloud-goods的服务 故需要resttemplate
    在OrderApp中初始化restTemplate:
    在这里插入图片描述
    完成controller:
    在这里插入图片描述
    浏览器发送http请求,可以得到结果:
    在这里插入图片描述
    后端控制台也有响应数据:

    在这里插入图片描述
    此时还有一个问题,localhost:9002是硬编码 不利于修改维护
    应该采用服务名的形式
    在这里插入图片描述
    但是此时直接用服务名是不被承认的,需要在启动类初始化restTemplate的地方添加注解:@LoadBalanced
    在这里插入图片描述
    该注解可以开启ribbon
    resttemplate发送请求通过ribbon去获取服务实例列表,从而让cloud-goods被映射成localhost:9002

    集群演示

    搭建GoodsApp集群
    在这里插入图片描述
    此时application.yml里的端口需要修改 获取port参数 如果没有就用8080
    在这里插入图片描述
    controller里获取一下端口号
    然后调用请求的时候打印一下
    在这里插入图片描述
    此时9001 9003是同一个集群

    9002发送10次请求;
    在这里插入图片描述
    发现9001 9003轮换(轮询) @LoadBalanced开启了负载均衡

    nacos领域模型

    nacos的服务由三元组唯一确定 (namespace、group、servicename)
    namespace:默认值为public
    group:默认值为DEFAULT_GROUP
    不同的namespace是相互隔离的,相同namespace但是不同group也是相互隔离的

    微服务发现另外一个微服务,通过三元组去找服务
    在这里插入图片描述
    1.新建命名空间:
    在这里插入图片描述
    在这里插入图片描述
    2.发布服务到指定命名空间
    要想发布服务 首先要在application.yml里添加配置
    cloud-goods的
    在这里插入图片描述
    cloud-order的
    在这里插入图片描述
    goods在测试环境 order在生产环境
    在这里插入图片描述
    再次发送save请求 发现报错 说明namespace生效 两个服务相互隔离
    在这里插入图片描述

  • 相关阅读:
    Kubernetes部署(八):k8s项目交付----(5)持续部署
    75基于matlab的模拟退火算法优化TSP(SA-TSP),最优路径动态寻优,输出最优路径值、路径曲线、迭代曲线。
    Snort中pcre和正则表达式的使用
    Springboot 集成 nacos (小白已测)
    相似度系列-6:单维度方法:Evaluating Coherence in Dialogue Systems using Entailment
    手把手教会你怎么压缩JPG图片
    java培训课程Spring MVC之文件上传
    存储过程报Illegal mix of collations错误的解决方法
    【OceanBase系列】—— 常用 SQL
    MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)
  • 原文地址:https://blog.csdn.net/qq_56892136/article/details/126441846