• 三(2)、springcloud之Eureka集群配置


    1)原理说明**

    • 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。
    • 当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。
    • 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。

    在这里插入图片描述

    • 处于不同节点的eureka通过Replicate进行数据同步
    • Application Service为服务提供者
    • Application Client为服务消费者
    • Make Remote Call完成一次服务调用

    2)新建其它Eureka注册中心

    新建microservicecloud-eureka-7002/microservicecloud-eureka-7003,步骤与之前一样,将microservicecloud-eureka-7001Eureka注册中心的内容复制到7002,7002,参考:上一篇博客

    注意这里:要修改主启动类,

    2)修改映射配置

    修改C:WindowsSystem32driversetc路径下的hosts文件

    在这里插入图片描述
    如果是单节点的注册中心,是无法保证系统稳定性的,当然现在项目部署架构不可能是单节点的。集群节点的部署思路:通过运行多个实例并请求他们相互注册,来完成注册中心的高可用性

    3)3台eureka服务器的yml配置

    7001:

    server: 
      port: 7001
     
    eureka: 
      instance:
        hostname: eureka7001.com #eureka服务端的实例名称
      client: 
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
          defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
          
    
    

    7002:

    server: 
      port: 7002
     
    eureka: 
      instance:
        hostname: eureka7002.com #eureka服务端的实例名称
      client: 
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
    
    

    7003:

    server: 
      port: 7003
     
    eureka: 
      instance:
        hostname: eureka7003.com #eureka服务端的实例名称
      client: 
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
    
    

    4)microservicecloud-provider-dept-8001微服务provider发布到上面3台eureka集群配置中

    server:
      port: 8001
      
    mybatis:
      config-location: classpath:mybatis/mybatis.cfg.xml  # mybatis配置文件所在路径
      type-aliases-package: com.jiatp.springcloud.entity  # 扫描此包下的entity ->所有entity别名类所在包
      mapper-locations:
      - classpath:mybatis/mapper/**/*.xml                 # mapper映射文件
     
    spring:
      application:
        name: microservicecloud-dept                      # 很重要,对外暴露的微服务名字
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource      # 数据源类型
        driver-class-name: org.gjt.mm.mysql.Driver        # 数据库驱动包
        url: jdbc:mysql://localhost:3306/cloudDB01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
        username: root
        password: 123456
        dbcp2:
          min-idle: 5                                     # 数据库连接池的最小维持连接数
          initial-size: 5                                 # 初始化连接数
          max-idle: 5                                     # 最大连接数
          max-wait-millis: 200                            # 等待连接获取的最大超时时间
    eureka:
      client:                                             # 客户端注册进eureka服务列表内
        serviceUrl:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ 
      instance:
        instance-id: microservicecloud-dept8001           # 自定义服务名称信息
        prefer-ip-address: true                           # 访问路径可以显示IP地址 
    
    info:
      app.name: jiatp-microservicecloud
      company.name: www.jiatp.club
      build.artifactId: $project.artifactId$
      build.version: $project.version$      
    

    测试:

    在这里插入图片描述

  • 相关阅读:
    python中装饰器
    python中函数后面的小括号的作用
    python中闭包
    python中LEGB原则
    python中不能在外层函数以外调用内层函数
    “咏刚的家”全新改版
    四个半月——我离 Google 有多远?
    关于翻译的两篇好文章
    崔健,又见崔健
    第一天——适逢惊蛰
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767460.html
Copyright © 2020-2023  润新知