Spring Cloud Eureka 搭建 & 集群方式

 更新时间:2022年03月04日 09:57:03   作者:李多肉同学  
这篇文章主要介绍了Spring Cloud Eureka 搭建 & 集群方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

关于Eureka的详细介绍已经在上篇文章通俗的讲了。

Eureka 本身是使用java 来开发的,Spring Cloud 使用 Spring Boot 技术对 Eureka进行了封装,所以在Spring Cloud中使用Eureka非常方便,只需要引入spring-cloud-starter-netflix-eureka-server依赖即可,然后启动即可。

1.Eureka 搭建

创建一个普通的Spring Boot项目,创建时添加Eureka依赖:

项目创建成功后,在项目启动类上添加注解,标记该项目是一个Eureka Server:

@SpringBootApplication
@EnableEurekaServer //开启Eureka
public class EurekaApplication {
      public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    } 
}

在application.properties 中配置:

# 给当前服务取名
spring.application.name=eureka
#端口号
server.port=1111
#默认情况下,eureka server 也是一个普通的微服务,所以当它还是一个注册中心的时候,会有两层身份:
# 1.注册中心
# 2.普通服务,即当前服务会自己注册到自己上面来
# false 意为当前项目不要注册到注册中心上
eureka.client.register-with-eureka=false
# 表示是否从 eureka server 上注册信息
eureka.client.fetch-registry=false

然后启动项目,项目启动成功后在浏览器访问:http://localhost:1111 就可以看到Eureka的管理页面了。

如下:

 2. Eureka 集群

 使用了注册中心后,所有的服务都要通过服务注册中心来进行信息交换。服务注册中心的稳定性就非常重要了,一旦服务注册中心掉线,会影响到整个系统的稳定性。所以在实际开发中,Eureka一般都是以集群的形式出现的。

Eureka集群,实际上就是启动多个Eureka实例, 多个Eureka实例之间互相注册,互相同步数据,共同组成一个Eureka集群。

搭建Eureka集群,首先要修改电脑的hosts文件(c:\windows\System32\drivers\etc\hosts),Linux上面搭建请点击这篇文章查看。

 我这里为了方便操作,直接在第一步搭建 eureka 的 demo基础上,在resources目录下,再添加两个配置文件,分别如下:

application-a.properties配置如下:

# 给当前服务取名
spring.application.name=eureka
#端口号
server.port=1111
eureka.instance.hostname=eurekaA
#默认情况下,eureka server 也是一个普通的微服务,所以当它还是一个注册中心的时候,会有两层身份:
# 1.注册中心
# 2.普通服务,即当前服务会自己注册到自己上面来
# false 意为当前项目不要注册到注册中心上
eureka.client.register-with-eureka=true
# 表示是否从 eureka server 上注册信息
eureka.client.fetch-registry=true
# A服务注册到B服务上( 配置多个的话后面用逗号隔开)
eureka.client.service-url.defaultZone=http://eurekaB:1112/eureka

application-b.properties配置如下:

# 给当前服务取名
spring.application.name=eureka
#端口号
server.port=1112
eureka.instance.hostname=eurekaB
#默认情况下,eureka server 也是一个普通的微服务,所以当它还是一个注册中心的时候,会有两层身份:
# 1.注册中心
# 2.普通服务,即当前服务会自己注册到自己上面来
# false 意为当前项目不要注册到注册中心上
eureka.client.register-with-eureka=true
# 表示是否从 eureka server 上注册信息
eureka.client.fetch-registry=true
 
eureka.client.service-url.defaultZone=http://eurekaA:1111/eureka

配置完成后对当前项目打包, 

打完包在IDEA命令行启动两个实例。两个启动命令分别如下:

java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=a
java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=b

注意:启动第一个a之后你会发现控制台报错,是因为它一直发送心跳,而同时b还没有上线,等b也启动后错误即可消失。如果还报错,那就是代码的问题了。

 启动成功后,就可以看到两个服务之间互相注册,共同组成一个集群。

如下图:

2.1 Eureka 集群原理

官方的Eureka集群架构图:

在这个集群架构中,Eureka Server 之间过 Replicate 进行数据同步,不同的 EurekaServer 之间不区分主从节点,所有节点都是平等的。

节点之间,通过置顶 serviceUrl 来相注册,形成一个集群,进而提高节点的可用性。

在 Eureka Server 集群中,如果有某一个节点宕机,Eureka Client 会自动切到新的 Eureka Server 上。每一个Eureka Server,都会互相同步数据。

Eureka Server 的连接方式,可以是单线的,就是A——>b——>C,此时,A的数据也会和C之间相同步。

但是一般不建议这种写法,在我们配置 serviceUrl 时,可以指定多个注册地址,即A可以即注册到B上,也可以同时注册到C上。

Eureka分区:

1.region:地理上的不同区域

2.zone:具体的机房

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mybatis plus in方法使用说明

    mybatis plus in方法使用说明

    这篇文章主要介绍了mybatis plus in方法使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Spring Boot Debug调试过程图解

    Spring Boot Debug调试过程图解

    这篇文章主要介绍了Spring Boot Debug调试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • java多态注意项小结

    java多态注意项小结

    面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。今天通过本文给大家介绍java多态注意项总结,感兴趣的朋友一起看看吧
    2021-10-10
  • SpringBoot实现接口幂等性的4种方案

    SpringBoot实现接口幂等性的4种方案

    这篇文章主要介绍了SpringBoot实现接口幂等性的4种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Springboot访问html页面步骤解析

    Springboot访问html页面步骤解析

    这篇文章主要介绍了Springboot访问html页面过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java使用反射获取list泛型过程浅析

    Java使用反射获取list泛型过程浅析

    这篇文章主要介绍了Java使用反射获取list泛型过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • Java使用opencv识别二维码的完整步骤

    Java使用opencv识别二维码的完整步骤

    OpenMV是一个开源,低成本,功能强大的机器视觉模块,下面这篇文章主要给大家介绍了关于Java使用opencv识别二维码的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • servlet之session工作原理简介_动力节点Java学院整理

    servlet之session工作原理简介_动力节点Java学院整理

    这篇文章主要介绍了servlet之session工作原理简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java多文件以ZIP压缩包导出的实现方法

    Java多文件以ZIP压缩包导出的实现方法

    这篇文章主要为大家详细介绍了Java多文件以ZIP压缩包导出的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java中对XML的解析详解

    Java中对XML的解析详解

    目前我知道的JAVA解析XML的方式有:DOM, SAX, StAX;如果选用这几种,感觉还是有点麻烦;如果使用:JAXB(Java Architecture for XML Binding),个人觉得太方便了
    2013-05-05

最新评论