zoukankan      html  css  js  c++  java
  • Spring cloud之Eureka(二)注册中心高可用

    背景

      在实际的生产环境中,注册中心如果只有一个,是很危险的,当这个注册中心由于各种原因不能提供正常服务或者挂掉时,整个系统都会崩溃,这是很致命的的,所以在Spring cloud 设计之初就考虑到了注册中心的高可用。

      springCloud的eureka高可用配置方案思路是:几个服务中心之间相互注册,比如两个注册中心,A注册到B上,B注册到A上,如果是三个注册中心则是:A注册到BC上,B注册到AC上,C注册到AB上,这样就会在几个注册中心间进行同步,同时服务提供方向三个注册中心均注册,这样就会保证当一个服务注册中心宕机的时候,不影响整个系统的正常运行,从而保证了eureka的高可用。

    示例

    application.properties配置修改

      一般我们会进行如下修改:

    #true表示将自己注册为一个服务,否则是启动了一个注册中心
    eureka.client.register-with-eureka=true

    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 eureka.client.fetch-registry=true

    我们以三个注册中心为例来构建高可用,这里我们在本机演示的是在本机上进行调试,ip都是一样的这时端口肯定不能一样:8880,8881,8882,如果是部署在不同的服务器上端口是可以一样的

    8880

    #本项目端口
    server:
      port: 8880
    #定义应用名称为order
    spring:
      application:
        name: server
    #服务注册中心实例主机名
    eureka:
      instance:
        hostname: host
      client:
    #是否向注册中心注册自己
        register-with-eureka: true
    #是否获取注册表
        fetch-registry: true
        service-url: 
          defaultZone: http://127.0.0.1:8881/eureka/,http://127.0.0.1:8882/eureka/

    8881

    #本项目端口
    server:
      port: 8881
    #定义应用名称为order
    spring:
      application:
        name: server1
    #服务注册中心实例主机名
    eureka:
      instance:
        hostname: host1
      client:
    #是否向注册中心注册自己
        register-with-eureka: true
    #是否获取注册表
        fetch-registry: true
        service-url: 
          defaultZone: http://127.0.0.1:8880/eureka/,http://127.0.0.1:8882/eureka/

    8882

    server:
      port: 8882
    #定义应用名称为order
    spring:
      application:
        name: server2
    #服务注册中心实例主机名
    eureka:
      instance:
        hostname: host2
      client:
    #是否向注册中心注册自己
        register-with-eureka: true
    #是否获取注册表
        fetch-registry: true
    #服务地址
        service-url: 
          defaultZone: http://127.0.0.1:8880/eureka/,http://127.0.0.1:8881/eureka/

    客户端使用配置

    服务提供者得配置文件中

    eureka.client.serviceUrl.defaultZone=http://host:8880/eureka/,http://host1:8881/eureka/,http://host2:8881/eureka/
    或者
    eureka.client.serviceUrl.defaultZone=http://host:8880/eureka/

    为什么两种写法都是可以?这是因为注册中心有服务互相同步功能。

  • 相关阅读:
    实现斐波那契数列的三种方式
    [LintCode]计算两个数的交集(二)
    [LintCode]计算两个数的交集(一)
    JNI技术概念小结
    require.js的用法
    JavaScript中模块“写法”
    模块化的JavaScript
    javascript如何判断访问网页的设备及是否支持触屏功能
    Javascript自由拖拽类
    JQuery中html()方法的注意事项
  • 原文地址:https://www.cnblogs.com/htyj/p/10667661.html
Copyright © 2011-2022 走看看