SpringCloud搭建Eureka高可用
高可用是CAP理论中的A,也就是集群部署,其中一个出故障了,另外一个还能接着使用,不影响用户访问。
这里简单介绍下CAP理论:
C:数据一致性(Consistent),分布式系统中,当用户访问其中一个节点,提交某个数据到上面,那么该节点会把数据同步到其他的节点上,让各个节点达到数据一致。
A:高可用(Availability),分布式系统中,当用户访问某个节点时,该节点挂掉了,会自动转到另一个节点,并不影响用户体验,让用户随时都能访问系统。
P:分区容错(Partition tolerance),也就是网络分区,也就是分布式,你都是分布式项目了,肯定得有P啊,不然怎么叫分布式。
其中P一般是都必须满足的,C和A不能同时满足,因为在满足数据一致性时,需要进行数据同步,当数据同步时,各个节点之间会进行数据传输,然后节点之间就会锁住不让访问,当同步完成后才能访问,这样就违背了A(高可用)理论,反之亦然。所以一般要了CP,要么CA。
Eureka就是强调AP原则,和zookeeper不同,zookeeper强调的是CP原则。这都是根据业务需求来的,好比银行,就必须满足数据一致性,必须满足AP。
开始搭建:
首先在hosts文件中修改一下配置,让127.0.0.1转换成域名访问。
C:\Windows\System32\drivers\etc\hosts 目录下打开文件。
添加如下代码:127.0.0.1 pre1 pre2
导入依赖和启动类注解就不说了,看我另一篇文章,Eureka注册端的依赖:https://blog.csdn.net/qq_39648029/article/details/95312934
直接看application.yml
server:
port: 8890
spring:
application:
name: eureka
profiles:
active: pre1
#spring:
# security:
# basic:
# enable: true
# user:
# name: admin
# password: 1234
# profiles: 127.0.0.1
eureka:
instance:
hostname: pre1
client:
registerWithEureka: false
fetchRegistry: false
service-url:
# defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://pre2:8891/eureka/
配置文件先是这样,启动项目。然后在换成下面这样,再次启动。(怎么启动2次项目看我上面那篇文章,里面讲的有)
server:
port: 8891
spring:
application:
name: eureka
profiles:
active: pre2
#spring:
# security:
# basic:
# enable: true
# user:
# name: admin
# password: 1234
# profiles: 127.0.0.1
eureka:
instance:
hostname: pre2
client:
registerWithEureka: false
fetchRegistry: false
service-url:
# defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://pre1:8890/eureka/
代码的意思就是,启动两个Eureka,然后相互注册。。这样就是一个Eureka集群了,同样也可以多弄几个。
然后启动一个客户端,用于注册到服务上:
代码如下,注册中心指向之前启动的2个Eureka服务。这样就完成了同时注册
server:
port: 8001
spring:
application:
name: spring-cloud-common
#注册中心指向start
eureka:
# instance:
# instance-id: spring-cloud-common
# appname: ${spring.application.name}
client:
service-url:
# defaultZone: http://admin:1234@127.0.0.1:8890/eureka/,http://admin:1234@127.0.0.1:8891/eureka/
defaultZone: http://pre1:8890/eureka/,http://pre2:8891/eureka/
#注册中心指向end
注册成功。。这个时候关闭其中一个Eureka服务端,剩下那个也能继续访问。。这样就保证了Eureka的高可用,挂掉一个不影响其他的服务。
还没有评论,来说两句吧...