SpringCloud-------Eureka使用

三、搭建服务注册与发现中心

Spring Cloud Netflix — Eureka

3.1 创建SpringBoot应用,导入eureka依赖

  • Eureka-server

3.2 配置eureka

  • application.yml

  • server:
      port: 8761
    spring:
      application:
        name: eureka-server
    eureka:
      client:
        # 是否设置单机模式
        register-with-eureka: false
        # 设置是否进行注册
        fetch-registry: false
        # 设置注册地址 http://ip:port/eureka
        # ip 表示服务注册与发现中心的ip
        # port 表示服务注册与发现中心的port
        # eureka 部分是固定的
        service-url:
          defaultzone: http://localhost:8761/eureka
  • 3.3 声明服务注册中心

    • 在当前项目的启动类添加@EnableEurekaServer

    • @SpringBootApplication
      @EnableEurekaServer
      public class EurekaApplication {
      
          public static void main(String[] args) {
              SpringApplication.run(EurekaApplication.class, args);
          }
      
      }
    • 3.4 测试

      • 启动项目

      • 浏览器访问:http://ip:port

        • 四、服务注册

          4.1 创建项目、完成服务功能开发

          • 创建SpringBoot项目,按照之前的开发模式进行服务的开发

          4.2 服务注册

          • 导入eureka-server依赖

            • 如果是基于微服务架构开发,在创建项目的时候可以直接勾选“Spring Cloud Discovery---Eureka server”

            • 如果是将单体项目改造成微服务项目,依赖通常需要手动加入

          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
          </dependency>

          • 配置application.yml
            • server:
                port: 8001
              
              # 每个服务必须指定name,此name就是当前系统中服务的唯一标识
              spring:
                application:
                  name: goods-provider
              
              # 指定当前服务注册的 “服务注册与发现中心”的地址
              eureka:
                client:
                  service-url:
                    defaultzone: http://localhost:8761/eureka
              在启动类添加@EnableEurekaClient
              • @SpringBootApplication
                @EnableEurekaClient
                public class GoodsProviderApplication {
                
                    public static void main(String[] args) {
                        SpringApplication.run(GoodsProviderApplication.class, args);
                    }
                
                }
              • 五、服务发现

                服务发现即服务调用,Spring Cloud Netflix提供两种实现用于完成服务调用

                • Ribbon

                • Feign

                5.1 基于Ribbon进行服务调用

                5.1.1 Ribbon依赖及配置
                • 服务消费者添加Ribbon依赖

                  • 创建项目时添加Ribbon的依赖

                    • 添加Eureka-server及Ribbon的依赖

                    • <dependency>
                          <groupId>org.springframework.cloud</groupId>
                          <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
                      </dependency>
                      <dependency>
                          <groupId>org.springframework.cloud</groupId>
                          <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                      </dependency>
                    • 配置application.yml
                    • server:
                        port: 9001
                      spring:
                        application:
                          name: goods-ui
                      eureka:
                        client:
                          service-url:
                            defaultzone: http://localhost:8761/eureka
                      • 在启动类添加@EnableDiscoveryClient注解
                        • @SpringBootApplication
                          @EnableDiscoveryClient
                          public class GoodsUiApplication {
                          
                              public static void main(String[] args) {
                                  SpringApplication.run(GoodsUiApplication.class, args);
                              }
                          
                          }
                          5.1.2 使用Ribbon进行服务的调用
                          • 配置RestTemplate

                          • @Configuration
                            public class AppConfig {
                            
                                @LoadBalanced  //负载均衡设置(启用Ribbon)
                                @Bean
                                public RestTemplate getRestTemplate(){
                                    return new RestTemplate();
                                }
                            
                            }
                          • 在Service中使用RestTemplate完成服务调用
                          • @Service
                            public class GoodsUIService {
                            
                                //通过服务的调用获取商品信息
                            
                                @Resource
                                private RestTemplate restTemplate;
                            
                                public void visitGoodsList(){
                                    String data = restTemplate.getForObject("http://goods-provider/goods/list", String.class);
                                    System.out.println("----"+data);
                                }
                            
                            }
原文地址:https://www.cnblogs.com/jikeyi/p/13339559.html