springcloud-Eureka服务注册发现01(二)

Eureka基础知识

  • 服务治理
  1. SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理.
  2. 在传统的rpc远程调用框架中, 管理每个服务与服务之间依赖关系比较复杂, 所以需要服务治理来管理服务与服务之间的依赖关系, 可以实现服务调用, 负载均衡, 容错等, 实现服务注册与发现
  • 服务注册与发现
  1. Eureka采用了C/S设计架构, Eureka Server作为服务注册功能的服务器, 它是服务注册中心. 而系统中的其他微服务使用Eureka客户端连接到Eureka Server并维持心跳连接, 这样系统维护人员可通过Eureka来监控系统中各微服务是否正常运行.
  2. 服务注册与发现中, 有一个注册中心, 当服务器启动的时候, 会把当前自己服务器的信息以别名方式注册到注册中心上, 另一方(如消费者)会以该别名的方式去注册中心上获取到实际的服务通讯地址, 然后再实现本地rpc的远程调用
  3. 下图是Eureka系统架构
  • Eureka的两个组件
  1. Eureka Server提供服务与注册
    • 各个微服务节点通过配置启动后, 会在EurekaServer中进行注册, 这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息, 服务节点的信息可以在界面中直观看到.
  2. EurekaClient通过注册中心进行访问
    • 是一个Java客户端, 用于简化Eureka Server的交互.
    • 客户端同时配备一个内置的, 使用轮循负载算法的负载均衡器.
    • 服务启动后, 会向Eureka Server发送心跳(默认周期30秒), 如果Eureka Server在多个心跳周期内都没有接收到某个节点的心跳, 则Eureka Server会把该服务节点从注册表中移除(默认90秒)

单机版Eureka的构建

  • IDEA生成Eureka Server端服务注册中心
  1. 建Module: cloud-eureka-server7001
  2. 改POM
    • 新老对比
      <!-- 新版 -->
          <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-eureka</artifactId>
              </dependency>
  3. 写yml
    server:
      port: 7001
    eureka:
      instance:
        hostname: localhost #eureka服务端的实例名字
      client:
        register-with-eureka: false #表示不向注册中心注册自己
        fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
        server-url:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
  4. 主启动类
    //表示该工程是Eureka Server
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaMain7001 {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaMain7001.class, args);
        }
    }
  5. 测试: http://localhost:7001/
    • 出现下图网页即可
  • 支付微服务8001入驻Eureka Server
  1. cloud-provider-payment8001注册进Eureka Server, 成为服务提供者provider
  2. 改POM
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  3. 写yml
    eureka:
      client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
  4. 主启动类
    //表示这是一个Eureka客户端
    @EnableEurekaClient
    @SpringBootApplication
    public class PaymentMain8001 {
    
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain8001.class, args);
        }
    }
  5. 测试
    • 成功启动服务后, 出现下图即可
  • 订单微服务80入驻Eureka Server
  1. EurekaClient端cloud-consumer-order80注册进入Eureka Server成为服务消费者consumer.
  2. 改pom
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  3. 写yml
    spring:
      application:
        name: cloud-order-service
    
    eureka:
      client:
        register-with-eureka: true # 是否注册进入Eureka Server
        fetch-registry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
  4. 主启动
    @EnableEurekaClient
    @SpringBootApplication
    public class OrderMain80 {
    
        public static void main(String[] args) {
            SpringApplication.run(OrderMain80.class, args);
        }
    }
  • 注意常出的bug
    • FAILED TO LOAD PROPERTY SOURCE FROM LOCATION 'CLASSPATH:/APPLICATION.YML’
    • 一般都是yml配置文件中的缩进没写对
posted @ 2020-06-22 21:22  yellowstreak  阅读(165)  评论(0编辑  收藏  举报