• 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);
                                  }
                              
                              }
  • 相关阅读:
    Muduo 网络编程示例之五: 测量两台机器的网络延迟
    “过家家”版的移动离线计费系统实现
    一种自动反射消息类型的 Google Protobuf 网络传输方案
    Muduo 设计与实现之一:Buffer 类的设计
    为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?
    Muduo 网络编程示例之八:用 Timing wheel 踢掉空闲连接
    C++ 工程实践(5):避免使用虚函数作为库的接口
    分布式系统中的进程标识
    Ormlite在一般java环境中操作Sqlite
    android游戏开发框架libgdx的使用(十八)—简单的AVG游戏效果实现
  • 原文地址:https://www.cnblogs.com/jikeyi/p/13339559.html
Copyright © 2020-2023  润新知