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
有问题评论区底下直接问,大家一起解决,博客介绍难免会不完全。