“Eureka”来源于古希腊词汇,意为“发现了”在软件领域, Eureka是 Netflix在线影片
公司开源的一个服务注册与发现的组件,和其他 Netflix公司的服务组件(例如负载均、断器、网关等)一起,被 Spring Cloud社区整合为 A Spring Cloud Netflix模块。
本章将从以下4个方面来讲解服务注册与发现模块 Eureka。
- Eureka简介。
- 编写一个 Eureka注册和发现的例子。
- 深入理解Eureka。
- 编写高可用的 Eureka server。
5.1.1什么是 Eureka
和Consul、 Zookeeper类似,Eureka是一个用于服务注册和发现的组件,最开始主要应用于亚马逊公司旗下的云计算平台AWS。Eureka分为Eureka Server
和 Eureka Client, Eureka Server为Eureka服务注册中心,Eureka Client为Eureka客户端。
5.1.2为什么进择 Eureka
在 Spring Cloud 中,可选择Consul、Zookeeper和Eureka作为服务注册和发现的组件为什么要选择Eureka呢?
首先 Eureka完全开源,是Netflix公司的开源产品,经历了Netflix公司的生产环境的考验,以及3年时间的不断选代,在功能和性能上都非常稳定,可以放心使用。
其次,Eureka是Spring Cloud首选推存的服务注册与发现组件,与Spring Cloud其他组件可以无疑对接。
最后,Eureka和其他组件,比如负载均衡组件Ribbon、熔断器组件Hystrix、熔断器监控组件Hystrix Dashboard组件、熔断器聚合监控Turbine组件,以及网关Zuul组件相互配合,能够很容易实现服务注册、负载均衡、熔断和智能路由等功能。这些组件都是由Netflix公司开源的,一起被称为Netflix OSS组件。Netflix OSS组件由Spring Cloud整合为Spring Cloud Netflix组件,它是Spring Cloud的构架微服务的核心组件,也是基础组件。
5.1.3 Eureka的基本架构
Eureka的基本架构主要包括以下3种角色。
- Register Service:服务注册中心,它是一个Eureka Server,提供服务注册和发现的功能。
- Provider Service:服务提供者,它是一个Eureka Client,提供服务。
- Consumer Service:服务消费者,它是一个Eureka Client,消费服务。
服务消费的基本过程如下:首先需要一个服务注册中心Eureka Server,服务提供者Eureka Client 向服务注册中心Eureka Server注册,将自己的信息(比如服务名和服务的IP地址等)通过REST API的形式提交给服务注册中心Eureka Server。同样服务消费者Eureka Client 也向服务注册中心Eureka Server注册,同时服务消费者获取一份服务注册列表的信息,该列表包含了所有向服务注册中心 Eureka Server注册的服务信息。获取服务注册列表信息之后,服务消费者就知道服务提供者的IP地址,可以通过Http远程调度来消费服务提供者的服务。