概念
服务注册
Eureka Client向Eureka Server注册
服务续约
Eureka Client默认情况下每30秒发送一次心跳来进行服务续约
获取服务注册列表信息
客户端向服务端获取服务注册信息,并将其缓存在本地,每30秒更新一次。如果由于某些原因导致注册信息不能及时匹配,客户端会重新获取整个注册表信息。可使用xml和json通信,默认以json通信。
服务下线
客户端关闭时可向服务端发送下线请求,该请求不会自动完成,需要手动调用如下代码:
注:DiscoveryManager在使用Spring Cloud Greenwich.RELEASE版本时发现为已过时的,具体替代类由于个人实力有限,暂时还不清楚
1
DiscoveryManager.getInstance().shutdownComponent();
服务剔除
在默认情况下,当客户端90秒没有向服务端发送心跳,服务端会将该客户端从注册表中移除
创建Maven主工程
由于本案例有多个Spring Boot工程,为了方便管理,采用Maven多Module结构
更改Type
首先我们通过idea创建一个Spring Boot工程,将其中的Type由Maven Project更改为Maven POM
修改pom文件
创建好spring boot工程后将pom文件做如下修改:
1 | <?xml version="1.0" encoding="UTF-8"?> |
创建Eureka Server
创建Module
在主工程下新增一个Module,名称叫做eureka-server
修改pom文件
1 | <?xml version="1.0" encoding="UTF-8"?> |
修改yml文件
1 | server: |
修改EurekaServerApplication文件
1 | package com.yhzl.cloud.eurekaserver; |
创建Eureka Client
创建步骤与Eureka Server一致
修改yml文件
1 | eureka: |
修改EurekaClientApplication文件
1 | package com.yhzl.cloud.eurekaclient; |
启动项目
构建高可用Eureka Server集群
修改Eureka Server的yml文件
1 | spring: |
配置Windows的hosts
首先以管理员权限打开记事本,然后找到hosts文件,默认是在该路径下
C:\Windows\System32\drivers\etc
然后添加两行代码
127.0.0.1 peer1
127.0.0.1 peer2
配置idea参数启动
找到Run Dashboard
配置启动项
peer1配置参考
peer2配置类似,只需将图中的peer1修改为peer2即可
修改eureka client的yml文件
1 | eureka: |
该配置文件的意思是,仅向peer1注册服务。
最后运行三个服务,会发现,虽然eureka client仅向peer1注册了服务,但是会自动同步到peer2上
Eureka自我保护机制
默认情况下,如果eureka server在15分钟之内接收到的服务续约率低于85%,那么eureka将会开启自我保护模式,这是为了防止当eureka注册中心自己网络出现故障时,导致了可用的eureka client被意外删除。默认情况下eureka的自我保护机制是开启的,如需关闭,可以在配置文件中添加如下代码
1 | eureka: |
自我保护模式推荐开启,这样可以防止当注册中心网络故障时导致的有效服务不可用。
当然自我保护模式也有坏处,默认情况下服务续约总数=服务总数*2。当服务总数过低时(低于7个),会导致真正的服务宕机eureka也会开启自我保护模式,因为服务续约率会低于百分之85.