Spring Cloud实战
上QQ阅读APP看书,第一时间看更新

3.1 了解Eureka框架

Eureka是Spring Cloud Netflix全家桶中的一个组件,在有些资料里,它也被称为“服务发现框架”。不管叫什么名字,我们都可以通过它来注册、发布、发现和调用服务。

3.1.1 Eureka能干什么

在项目里,一般存在“服务提供者”和“服务调用者”两种角色,为了调到服务,服务提供者需要服务调用者知道“服务所在的IP地址、端口号和提供服务的方法名”这些关键信息,如果服务比较多,那么该如何维护这些服务信息呢?

比较直观的解决方案是“用静态的方式来管理服务列表”,比如在一个配置文件里放入所有的服务清单,包括刚才提到的IP地址、端口号和方法名,但这未必是一种好的选项。

一方面,如果系统里服务提供模块的数量很多,那么这类配置文件就会很长,这样可读性就会很差,从而导致该文件很难维护。另一方面,随着项目的不断深入,服务提供模块一定是会不断变更的,在配置文件中的服务列表信息也需要随之不断更改。这不仅增加了系统的维护难度,还会提升诸如命名冲突这类问题的风险。

Eureka组件为此提供了一套较好的解决方案。


第一,服务提供者可以向Eureka注册中心注册本模块可以提供的服务。

第二,服务调用者能从Eureka注册中心查找(也就是发现)和调用所需的服务。

第三,大家可以把Eureka理解成第三方的服务管理平台。一旦有新的服务生成或有旧的服务失效,Eureka能做到自动更新服务列表,这就降低了因服务不断变更而导致的项目维护成本。

3.1.2 Eureka的框架图

从图3.1中,我们能看到Eureka的基本架构。

图3.1 Eureka的基本框架

在Eureka的服务器里,包含着记录当前所有服务列表的注册中心,而服务提供者和调用者所在的机器均被称为“Eureka客户端”。

服务提供者会和服务器进行如下交互:第一,注册本身能提供的服务;第二,定时发送心跳,以此证明本服务处于生效状态。服务调用者一般会从服务器查找服务,并根据找到的结果从服务提供者端调用服务。