转载自:https://blog.csdn.net/tanga842428/article/details/80654359
一 Eureka简介
![](https://i-blog.csdnimg.cn/blog_migrate/d82f671eaec47a265d6cc924357a734d.png)
二 Eureka原理
1 Region与Available Zone概念
![](https://i-blog.csdnimg.cn/blog_migrate/3698e8b090ad54b12b955f64ac00b915.png)
Region与Available Zone都是AWS的概念。其中Region表示AWS的地理位置,每个Region都有多个Available Zone,各个Region之间完全隔离。AWS通过这种方式实现最大的容错和稳定性。
Spring Cloud默认使用的Region是us-east-1,在非AWS环境下,可以将Available Zone理解为机房,将Region理解为跨机房的Eureka集群。
示例
![](https://i-blog.csdnimg.cn/blog_migrate/acb922542d7a6ce45ba26af3728b05eb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9de89aaeafa4e5d4aa82d3a8849b8516.png)
2 Eureka架构图
![](https://i-blog.csdnimg.cn/blog_migrate/d5f39678db21e584bc1c4758f0b87088.png)
3 解释
Application Service:服务提供者。
Application Client:服务消费者。
Make Remote Call:调用RESTful的接口
us-east-1c、us-east-1等是zone,它们属于us-east-1这个region。
Eureka包含两个组件:Eureka Server和Eureka Client。
这两个组件的作用如下:
1 Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Server 会存储这些信息。
2 Eureka Client是一个Java客户端,用于简化Eureka Server的交互。
3 微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”。
4 如果Eureka Server在一定时间内没有接受到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。
5 默认情况下,Eureka Server同时也是Eureka Client,多个Eureka Server实例,互相之间通过复制方式,来实现服务注册表中数据的同步。
6 Eureka Clent会缓存服务注册表中的信息。这种方式有一定的优势——首先,微服务无须每次请求都查询Eureka Server,从而降低Eureka Server的压力,其次,即使Eureka Server所有节点都宕机,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。
综上,Eureka 通过心跳检查,客户端缓存等机制,提供了系统的灵活性、可伸缩性和可用性。