springcloud组件

一、Eureka 服务注册与发现

 搭建流程:

1. 注册中心:

  • 引入eureka服务端依赖
             <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server -->
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
                 <version>3.1.0</version>
             </dependency>
  • 添加application.yml文件
    复制代码
     server:
       port: 10086
     spring:
       application:
         name: eurekaServer
     
     
     #defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置
     eureka:
       client:
         service-url:
           defaultZone: http://127.0.0.1:10086/eureka/
    复制代码
  • 编写启动类,添加 @EnableEurekaServer 注解,启动eurekaServer项目
  • 访问 http://127.0.0.1:10086/,显示如下图成功

2. 服务注册:

  • 引入eureka-client依赖
    复制代码
             <!--&lt;!&ndash;       兼容eureka-client&ndash;&gt;-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-web</artifactId>
             </dependency>
     
             <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                 <version>3.1.0</version>
             </dependency>
    复制代码
  • 添加application.yml文件
    复制代码
     server:
       port: 8081
     spring:
       application:
         name: eurekaClientA
     
     eureka:
       client:
         service-url:
           defaultZone: http://127.0.0.1:10086/eureka/
    复制代码
  • 启动eurekaServer项目和eurekaClientA项目
  • 访问 http://127.0.0.1:10086/,显示如下图成功

3. 服务发现:

  • 注册eurekaClientC项目,application.yml文件
    复制代码
     server:
       port: 8082
     spring:
       application:
         name: eurekaClientC
     
     eureka:
       client:
         service-url:
          defaultZone: http://127.0.0.1:10086/eureka/
    复制代码
  • 项目EurekaClientA的启动类,创建RestTemplate
    复制代码
    @SpringBootApplication
    public class EurekaClientAApplication {
    
       public static void main(String[] args) {
           SpringApplication.run(EurekaClientAApplication.class, args);
       }
     
        // 创建RestTemplate并注入spring容器,@LoadBalanced负载均衡
       @Bean
        @LoadBalanced
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    复制代码
  • 项目EurekaClientA创建controller
    复制代码
    @RestController
    public class Demo {
    
        @Resource
        RestTemplate restTemplate;
    
         @GetMapping("/test")
        public void test(){
            System.out.println("eurekaClientA");
            String url = "http://eurekaClientC/test";
            final String forObject = restTemplate.getForObject(url, String.class);
            System.out.println(forObject);
        }
    }
    复制代码
  • 启动eurekaServer项目、eurekaClientA项目和eurekaClientC项目
  • 访问 http://localhost:8081/test 可以成功访问到EurekaClientC项目

 

二、Ribbon 负载均衡

 

三、Feign 远程调用 (集成了负载均衡)

  • 创建被调用的项目EurekaClientC
    • 依赖
      复制代码
              <!--&lt;!&ndash;       兼容eureka-client&ndash;&gt;-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
              <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                  <version>3.1.0</version>
              </dependency>
              <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-openfeign</artifactId>
                  <version>3.1.0</version>
              </dependency>
      复制代码
    • 添加application.yml文件
      复制代码
      server:
        port: 8092
      spring:
        application:
          name: eurekaClientC
      
      eureka:
        client:
          service-url:
            defaultZone: http://127.0.0.1:10086/eureka/
      复制代码
    • 创建FeignClient
      @FeignClient("eurekaClientC")
      public interface DemoApi {
      
          @GetMapping("/test")
          String test();
      }
    • 创建controller
      复制代码
      @RestController
      public class Demo {
      
          @GetMapping("/test")
          public String test(){
              System.out.println("eurekaClientC");
              return "eurekaClientC";
          }
      }
      复制代码
    • 启动类添加 @EnableFeignClients 注解 使FeignClient注解的类生效并注入spring
    • 利用maven -> deploy 部署项目到仓库。
      如果没有远程仓库会报错如图1,可以忽略,利用本地仓库。注意:需要在pom中注释掉maven的打包插件,详细看maven_deploy

       图1

  • 创建调用的项目EurekaClientE
    • 依赖
      复制代码
              <!--&lt;!&ndash;       兼容eureka-client&ndash;&gt;-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
              <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                  <version>3.1.0</version>
              </dependency>
      
      <!--        从项目EurekaClientC的pom中来-->
              <dependency>
                  <groupId>com.example</groupId>
                  <artifactId>EurekaClientC</artifactId>
                  <version>0.0.1-SNAPSHOT</version>
              </dependency>
      复制代码
    • 添加application.yml文件
      复制代码
      server:
        port: 8084
      spring:
        application:
          name: eurekaClientE
      
      eureka:
        client:
          service-url:
            defaultZone: http://127.0.0.1:10086/eureka/
      复制代码
    • 创建controller
      复制代码
      @RestController
      public class Demo {
      
          @Resource
          DemoApi demoApi;
      
          @GetMapping("/test")
          public void demo(){
              System.out.println("eurekaClientE");
              String demo = demoApi.test();
              System.out.println(demo);
          }
      }
      复制代码
    • 启动类添加 @EnableFeignClients(basePackages = {"com.example.eurekaclientc") 注解 扫描被调用项目的FeignClient
  • 启动注册中心,EurekaClientC项目和EurekaClientE项目,访问EurekaClientE项目的controller,远程调用EurekaClientC项目 

 

四、Gateway网关

 

 

作用:

  • 对用户请求做身份认证、权限校验
  • 将用户请求路由到微服务,并实现负载均衡
  • 对用户请求做限流

搭建:

  • 创建项目Gateway
  • 引入网关依赖和服务注册依赖
    复制代码
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                <version>3.1.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
                <version>3.1.0</version>
            </dependency>
    复制代码
  • 添加application.yml文件
    复制代码
    server:
      port: 8085
    spring:
      application:
        name: gateway
      cloud:
        gateway:
          routes: #网关路由配置,数组
            - id: eurekaClientE #路由ID,唯一标识
              uri: lb://eurekaClientE #路由目标地址,lb负载均衡,eurekaClientE服务名称
              predicates: #路由断言,有11中,可以按照时间、IP地址....    ,匹配到服务/404失败
    #            - Before=2023-01-20T17:42:47.789-07:00[America/Denver] #根据时间断言,before某个时间之前
                - Path=/test/ #根据路径断言,路径解析为 eurekaClientE/test/
            - id: eurekaClientC
              uri: lb://eurekaClientC
              predicates:
    - Path=/tests/
    # - After=2023-01-20T17:42:47.789-07:00[America/Denver]
    
    eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:10086/eureka/
    复制代码
  • 启动注册中心、Gateway项目和EurekaClientE项目
  • 访问 localhost:8085/test 转发EurekaClientE服务成功
posted @   美少女战士就是我  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示