Eureka的高可用实现

Eureka的高可用实现

参考版本:spring boot 2.5 eureka 3.0



前言

这我也是第一次接触Eureka,不得不说真香,一路从硬件、自动化、移动端、前后端,再到深度学习、机器学习、大数据,一圈转下来还是只喜欢后端,接下来也开始不断更新博客、github了,有兴趣的兄弟姐妹可以一起探讨。
还是太菜了,阿里字节的笔试算法就被刷掉了,还要继续努力呀!!


一、Eureka是什么?

老客套话了,就不搬官方解释了。这边也就介绍常规用用的东西了,要想吃透这东西还是得去看官方文档,博客介绍全面得没几个。

Erueka就是个服务注册中心,提供服务的注册与发现。
最重要的就是两个组件:Eureka Server、Eureka Client

1.Eureka Server

springboot开启服务之后,就可以在查看注册的服务节点的信息了。就是启动springboot以后通过端口访问的地址那个页面。
在这里插入图片描述

1.Eureka Client

应用启动后,将会向Eureka Server发送心跳 (默认周期为30秒) 。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除掉 (默认周期为90s)
启动client后你可以看下控制台,会一遍遍的重复向服务器发送。
启动client的几个重要点,我在下方再介绍。

二、使用步骤

实验流程:先做Server的配置,然后client,1对1实现后,我们去做1对2的高可用,了解Eureka的工作流程以及它的特性。

1.pom文件

Eureka的实现单个项目也能模拟,但没啥意思,我这就模拟多个项目使用Eureka吧。
pom的话没啥花的,注意好client项目和server项目的版本一致。

2.Eureka Server的使用

配置下application.yml:

#server:
#  port: 8761
eureka:
  client:
    service-url:
#      设置与EurekaServer 交互的地址,查询服务和注册服务都依赖这个地址
      defaultZone: http://localhost:8762/eureka/
#      是否将自己注册到EurrkeServer,默认为true
    register-with-eureka: false
    #    eureka server的自我保护
    server:
      enable-self-preservation: false
spring:
  application:
    name: eureka

spring启动类添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class ViewblogApplication {

    public static void main(String[] args) {
        SpringApplication.run(ViewblogApplication.class, args);
    }

}

直接启动输入http://localhost:8761 。这边的端口是根据你的yml设置或者如下图配置
在这里插入图片描述然后启动即可。

3.Eureka Client的使用

3.1 pom版本记住一致

3.2 application.yml

eureka:
  client:
    service-url:
#    指定eureka的路径
      defaultZone: http://localhost:8761/eureka/,http://localhost:8761/eureka/
#    修改默认名称
    instance:
      hostname: clientName

spring:
  application:
    name: client1

3.2 启动类配置

记住加上@EnableDiscoveryClient注解,和Server的注解是不一样的看清噢!

@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

接下来直接开始高可用部分!!!

4.高可用

直接上图!!
在这里插入图片描述简单不,是不是一眼就会,俩个Eureka配置之间相互注册一下,虽然client只在Eureka1上注册了,但是会同步到Eureka上去。
在这里插入图片描述你现在关掉Eureka1试试,结果就算Eureka1挂掉,Eureta2上的client还会存在。就是因为心跳机制的原因。

在这里插入图片描述接下来我们重启一下Eureka试试,看看Client是否还连接着。
答案:想想都应该是没有的,进程重启后,它和Client已经没有直接联系了,所以自然就断了。

4.多个Eureka Server的使用

你看,如果我们要实现高可用,是不是就要形成一个环,无论哪个断掉,都不影响其他节点的运行。
所以就肯定要在节点与节点直接动手。
Client:修改yml的defaultZone

eureka:
  client:
    service-url:
#     指定eureka的路径

      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
#    修改默认路径
    instance:
      hostname: clientName

spring:
  application:
    name: client1

Server:
你在启动的时候和Client同样的玩法,修改defaultZone。假如有3个节点,那么1节点,连接的时候默认路径是节点2和3,2节点,连接的时候默认路径是节点1和3,3节点,连接的时候默认路径是节点1和2.是不是就互相连接了。

自己琢磨琢磨,加油兄弟们。


总结

github地址:https://github.com/TianyangTao

有问题评论区底下直接问,大家一起解决,博客介绍难免会不完全。


版权声明:本文为qq_41562031原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。