Spring Cloud Eureka高可用

简介: Spring Cloud Eureka高可用 高可用客户端(HA client) 多用于生产环境,客户端应用关联或配置注册中心服务器集群,避免注册中心单点故障 常用配置手段 多注册中心主机 注册中心DNS 广播 Spring Cloud Eureka Client 如果Eureka客户端应用配置多个Eureka注册服务器,那么默认情况只有第一台可用的服务器,存在注册信息。

Spring Cloud Eureka高可用

高可用客户端(HA client)

多用于生产环境,客户端应用关联或配置注册中心服务器集群,避免注册中心单点故障

常用配置手段

  • 多注册中心主机
  • 注册中心DNS
  • 广播

Spring Cloud Eureka Client

如果Eureka客户端应用配置多个Eureka注册服务器,那么默认情况只有第一台可用的服务器,存在注册信息。如果第一台可用的Eureka服务器Down掉了,那么Eureka客户端应用将会选择下一台可用的Eureka服务器

  • 配置属性

eureka.client.serviceUrl.defaultZone=http://${eureka.server1.host}:{rureka.server1.port}/eureka,/${eureka.server2.host}:{rureka.server2.port}/eureka

Eureka客户端

配置多个Eureka注册中心

我的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>spring-cloud-lesson-5-eureka-client</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>spring-cloud-lesson-5-eureka-client</name>
   <description>Demo project for Spring Boot</description>

   <properties>
      <java.version>1.8</java.version>
      <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

1.先使用注解激活,在启动类中!!!
@EnableDiscoveryClient或者@EnableEurekaClient
2.配置application.properties

##应用名称
spring.application.name=spring-cloud-eureka-client
##客户端端口
server.port=0
##配置链接Eureka服务器
##配置多个Eureka注册中心,以“,”分割
eureka.client.serviceUrl.defaultZone=\
  http://localhost:9090/eureka,\
  http://localhost:9001/eureka

Eureka服务器端

我的pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>spring-cloud-lesson-5-eureka-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>spring-cloud-lesson-5-eureka-server</name>
   <description>Demo project for Spring Boot</description>

   <properties>
      <java.version>1.8</java.version>
      <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
   </properties>

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

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

1.先使用注解激活服务端,在启动类中!!!
@EnableEurekaServer
2.修改application.properties配置文件


##定义应用名称
spring.application.name=spring-cloud-eureka-server
##配置端口
##通过启动参数覆盖9090端口
server.port=9090
##取消向注册中心注册
eureka.client.register-with-eureka=false
##取消向注册中心获取注册信息,实例信息
eureka.client.fetch-registry=false
##解决Peer/集群连接问题
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

bb

修改后可以启动第二个9001服务器

Spring Cloud Eureka Client

应用元信息

  • 获取间隔
    配置项:eureka.client.registryFetchIntervalSeconds
  • 同步间隔
    配置项:eureka.client.instanceInfoReplicationIntervalSeconds

在客户端配置处进行修改配置

##应用名称
spring.application.name=spring-cloud-eureka-client
##客户端端口
server.port=0
##配置链接Eureka服务器
##配置多个Eureka注册中心,以“,”分割
eureka.client.serviceUrl.defaultZone=\
  http://localhost:9090/eureka,\
  http://localhost:9001/eureka
##调整获取所有应用元信息间隔时间
eureka.client.registry-fetch-interval-seconds=5
##调整应用元信息间隔时间
eureka.client.instance-info-replication-interval-seconds=5

然后关闭服务器进行测试是否5秒钟后报连接错误

主要如果不修改配置的话,默认时间为30s


间隔越小,一致性就越强

高可用注册中心(HA Registry Center)

高可用注册中心不但需要提供集群环境,解决单点故障的问题。同时,也许优雅地处理注册中心之间信息同步的问题

  • 配置属性
    eureka.server.host1:eureka.client.serviceUrl.defaultZone=http://${eureka.server2.host}:${eureka.server2.port}/eureka

eureka.server.host2:eureka.client.serviceUrl.defaultZone=http://${eureka.server1.host}:${eureka.server1.port}/eureka

目录
相关文章
|
30天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
46 0
|
29天前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
130 1
|
29天前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
135 0
|
30天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
130 0
|
30天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
80 0
|
1月前
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
394 0
|
1天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
2天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
19 2
|
16天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
30天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
61 1