章节目录
1. 集成Eureka
1.1 简介
EureKa在Spring Cloud全家桶中担任着服务的注册与发现的落地实现。Netflix在设计EureKa时遵循着AP原则,它基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,功能类似于Dubbo的注册中心Zookeeper。
1.2 工作原理
Eureka包含两个组件:Eureka Server、Eureka Client。Eureka Server提供服务发现能力,各个微服务启动时会向Eureka Server注册自己的信息(服务名、IP、端口等),Eureka Server便存储了这个信息。Eureka Client 是一个Java客户端,用于简化与Eureka的交互。每个微服务启动后, 会每个一定时间(默认30s)向Eureka Server 发送心,让其知道自己扔健康存活。如果Eureka Server在一定时间内(默认90s)没有收到某个微服务实例的心跳,Eureka Server就会注销该实例。默认情况下,Eureka Server也是Eureka Client,多个Eureka Server之间通过复制方式,来实现服务注册表中的数据同步。Eureka Client会缓存服务注册表中的信息, 无须每次都请求Eureka Server查询,缓解了Eureka Server的压力;即使Eureka Server所有节点都宕机,服务消费者依然可以查询自己缓存中的信息找到去调用服务提供者
1.3 搭建一个HelloWorld的Eureka项目
项目结构图:
springBoot项目与Eureka注册中心整合时会出现版本兼容问题,具体的可查看博文 springBoot项目与Eureka注册中心整合时候关于版本兼容问题,所以,这里修改了SpringBoot的版本。
版本
- SpringBoot: 2.1.3.RELEASE
- SpringCloud: Finchley.RELEASE
1.3.1 Server端
1.3.1.1 引入依赖
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springCloud注册中心服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<!--spring cloud版本-->
<dependenc