参考资料
Eureka控制台参数说明:https://www.cnblogs.com/linjiqin/p/10087462.html
前言
eureka作为springcloud框架的核心组成部分,主要分为server端和client端,本篇主要就eureka的一些基本概念进行讲解,同时完成server端的搭建,为接下来的源码学习做好准备。
服务搭建
gitee地址:https://gitee.com/zhengyh25/eureka-server.git
github地址:https://github.com/MrXiaoguai/eureka-server.git
因为网上已经有很多搭建教程了,这里就不进行赘述了,只对大致的搭建流程进行描述,并对一些常见问题进行解答。另外提供我搭建完成的项目地址,方便大家学习。
搭建环境
- 系统:macos 10.15.3
- jdk:1.8
- springboot:2.2.4.RELEASE
- 开发环境:idea2019.3.3
server端搭建
项目初始化
项目初始化:idea->create new project->选择Spring Initializr(选择jdk1.8,Service URL为default)->设置project Metadata(根据自己习惯设置即可)->引入依赖(Spring Cloud Discovery->Eureka Server)->自定义项目路径->finish。
初始化完成,进入项目,打开pom文件,我们可以看到项目自动添加了需要的依赖包。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
至此,只需在springboot启动类上添加@EnableEurekaServer注释,即可按其默认配置启动一个单实例server。
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
Eureka Server控制台简介
启动EurekaApplication,我们可以进入server的注册中心页面,下面简单介绍以下注册中心的相关内容。
- System Status
Environment:环境,默认为test。该参数在实际生产中使用。
Data center:数据中心。
Current time:当前系统时间。
Uptime:server已运行时间。
Lease expiration enabled:是否启动租约到期。默认自我保护机制开启,为false。关闭自我保护机制,该值为true。
Renews threshold:续约阈值,即每分钟server期待收到的client端的续约请求数。
Renew (last min):上一分钟收到的client端的续约请求数。 - 红字提醒
系统可能会出现三种红色加粗的字体提示:- RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
原因:关闭了自我保护机制,并且续约实例少于阈值,server可能会剔除一些因为网络原因没有续约的实例。 - EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE
NOT BEING EXPIRED JUST TO BE SAFE.
原因:开启自我保护机制,server可能会记录一些已经下线了的client实例。 - THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
原因:关闭了自我保护机制,提醒管理者server不再为因为网络问题没有续约的client提供保护。
- RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
- DS Replicas
DS Replicas中是server的同伴(peer),即该server的相邻节点,根据配置eureka.client.service-url.defaultZone中的ip取值。集群中用到,单例中不使用。因为我们没有配置server属性,所以eureka.client.service-url.defaultZone默认为http://localhost:8761/eureka/。因此上图中显示为localhost。 - Instances currently registered with Eureka
该部分为本server的注册表,用于记录注册到该服务的实例,application为应用名,一个应用可以有多个实例,记录于Availability Zones。 - General Info
本部分用于记录server的通用信息。
total-avail-memory:总共可用内存大小。
environment:环境名称。
num-of-cpus:主机cpu核数。
current-memory-usage:当前已用内存。
server-uptime:服务已启动时间。
registered-replicas:相邻集群复制节点,即配置的eureka.client.service-url.defaultZone。
unavailable-replicas:不可用的集群复制节点,如何确定不可用? 主要是server1 向 peer节点发送接口查询自身的注册信息,如果查询不到,则默认为不可用,也就是说如果Eureka Server自身不作为客户端注册到上面去,则相邻节点都会显示为不可用。
available-replicas:可用的相邻集群复制节点。
注:有一种特殊情况暂时不知道原因,先记录下来。配置7901,7902,7903三个端口的server集群。启动时候,当7901的defaultZone: http://root:root@localhost:7902/eureka/,http://root:root@localhost:7903/eureka/时,其他节点同样使用localhost作为ip,各个实例都能互相注册,却都在unavailable-replicas中,这三个实例互相注册和同步注册信息都没有问题。只有将localhost改成hostname后才在available-replicas,这个会接下来的集群配置中提及。 - Instance Info
本部分为实例信息:
ipAddr:server实例的ip地址
status:server实例的状态 - LAST 1000 SINCE START UP
Last 1000 cancelled leases:最后1000个取消的租约
Last 1000 newly registered leases:最后1000个新注册的租约
总结
本章主要就service的初始化和控制台进行讲解,使用的是默认的当然我们也可以通过配置application.yml来修改server属性,同理适用于client端,下一章会就server单实例和集群配置,client端注册的实现进行讲解。