背景
可以想像使用HttpUrlConnection和RestTemplate等类去调用一个http接口,这个时候会有大量的接口地址需要配置,所以出现了Eureka服务注册中心。
应用场景
在微服务中,有很多个服务的ip和端口等需要各种调用,为了方便管理各个服务的接口信息和调用。
Eureka的交互流程
Eureka记录了服务和服务地址的映射关系,服务会注册到这里,当服务需要调用其他服务时,在这里可以找到服务调用地址从而进行调用。
Eureka的基本架构包括:
- Eureka Server
提供服务注册与发现
- Service Provider
服务提供者
- Service Consumer
服务消费者
Eureka的工作原理
Eureka工作原理要使用到Eureka的两个重要组成Eureka Server和Eureka Client;
Eureka Client
1、Eureka Client是一个Java客户端,当微服务启动时会通过Eureka Client向Eureka Server提供服务;
2、Eureka Client会拉取并缓存服务提供者实例保存到Eureka Server中的接口信息,这样即使所有的Eureka Server节点都宕机,也可以从Eureka Client中找到服务提供者的接口信息进行使用。
Eureka Server
1、微服务启动后Eureka Server会接收每个Eureka Client发送(注册)过来的服务接口信息并保存;
2、微服务启动之后,会周期性(默认30s)的向Eureka Server发送心跳用来说明服务是可用的;
3、如果Eureka Server在一定的时间内(默认90s)没有收到某个服务节点的心跳,将会注销该服务节点;
4、每个Eureka Server也是一个Eureka Client,高可用的Eureka Server就是通过这种方式来完成集群的创建和多个Eureka Server注册表的同步。
Eureka 元数据的概念
通俗的说Eureka的元数据就是保存在Eureka Server中的服务实例的信息。
Eureka中元数据有两种:标准元数据和自定义元数据
标准元数据:主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间调用。
自定义元数据:可以使用eureka.instance.metadata-map配置,符合KEY/VALUE的存储格式。这些元数据可以被远程客户端访问。