• Spring Cloud——Nacos(注册中心快速入门、服务发现详解、集成openFeign和gateway)


    创建一个nacos客户端并注册

    新建一个Maven项目命名nacos,在建一个Spring Boot项目,修改Custom内的值为https://start.aliyun.com
    在这里插入图片描述

    在这里插入图片描述
    小插曲:直接换成https://start.aliyun.com后下一步中导入依赖时候依然搜不到nacos等,要退出创建页面重新进一下就好了
    选择Spring Web和Nacos Service Discovery依赖
    在这里插入图片描述
    修改boot和alibaba版本

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
    </properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    将插件删除
    在这里插入图片描述
    修改properties为yml,进行配置

    server:
      port: 8080
    spring:
      application:
        name: nacos-client-a
      cloud:
        nacos:
          server-addr: localhost:8848
          username: nacos
          password: nacos
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    删除自动创建的类,修改启动类,跟之前eureka一样
    在这里插入图片描述
    开启服务发现客户端@EnableDiscoveryClient
    在这里插入图片描述
    在这里插入图片描述
    启动,不指定命名空间默认注册到public里面,不指定分组会注册到DEFAULT_GROUP里面去
    在这里插入图片描述

    再创建一个nacos客户端,注册到另一个命名空间中另一个组去,并修改注册名称

    步骤同上,在yml文件中添加属性,namespace后面是命名空间的id,service: user-service #值为注册列表的名字,若不写则默认${spring.application.name}
    在这里插入图片描述

    server:
      port: 8081
    spring:
      application:
        name: nacos-client-b
      cloud:
        nacos:
          server-addr: localhost:8848
          username: nacos
          password: nacos
          discovery:
            namespace: 582ecb25-d166-4c5f-8802-58171bd6a250
            group: A_Group
            service: user-service 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    在a中找b

    在a中创建一个Controller
    在这里插入图片描述

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cloud.client.ServiceInstance;
    import org.springframework.cloud.client.discovery.DiscoveryClient;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.List;
    
    @RestController
    public class TestController {
        @Autowired
        public DiscoveryClient discoveryClient;
        @GetMapping("test")
        public String doDiscovery(String serviceName){
            List<ServiceInstance> instances=discoveryClient.getInstances(serviceName);
            System.out.println(instances);
            return "OK";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    测试发现,值为空,说明跨命名空间是无法找到的,经测试,跨组也不不能找到
    在这里插入图片描述在这里插入图片描述

    集成openFeign

    在b中写好一个方法
    在这里插入图片描述
    在a中添加OpenFeign依赖以及Cloud依赖,Cloud依赖管理
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    
    • 1
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version> <type>pom</type>
        <scope>import</scope>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    添加Feign的注解
    在这里插入图片描述
    创建一个接口,添加Feign注解填写value值,对b方法做接口
    在这里插入图片描述
    回到a的Controller,使用testFeign,进行测试
    在这里插入图片描述
    在这里插入图片描述

    集成gateway(网关)

    创建一个spring boot项目,选择以下依赖
    在这里插入图片描述修改pom,xml中版本,删除build

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    </properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    修改properties为yml,输入配置,gateway是开启动态路由,lower是服务名称小写

    server:
      port: 80
    spring:
      application:
        name: gateway
      cloud:
        nacos:
          server-addr: localhost:8848
          username: nacos
          password: nacos
          discovery:
            group: A_Group
            namespace: 582ecb25-d166-4c5f-8802-58171bd6a250
        gateway:
          discovery:
            locator:
              enabled: true
              lower-case-service-id: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    添加开启服务发现客户端注解
    在这里插入图片描述
    测试
    在这里插入图片描述

  • 相关阅读:
    ffmpeg 枚举decoders, encoders 分析
    Java基础总结
    Windows OpenGL ES 图像对比度调节
    全能型开源数据库监控平台 - lepus
    JS案例:在浏览器实现自定义菜单
    大二学生JavaScript实训大作业——动漫秦时明月7页 期末网页制作 HTML+CSS+JavaScript 网页设计实例 企业网站制作
    linux开发板用网线直连电脑(电脑无网口)
    【架构】研发高可用架构和系统设计经验
    一文读懂CRL、程序集、托管模块
    QT学习大纲
  • 原文地址:https://blog.csdn.net/YiRenGengShangBuQi/article/details/125510394