Appearance
第3章 微服务发布与调用
本章要点
- 认识 Eureka 框架
- 运行 Eureka 服务器
- 发布微服务
- 调用微服务
- 服务器端配置
- 服务提供者配置
- 搭建 Eureka 集群
本章将讲述 Spring Cloud 中 Eureka 的使用,包括在 Eureka 服务器上发布、调用微服务,Eureka 的配置以及 Eureka 集群等内容。
3.1 Eureka介绍
Spring Cloud 集成了 Netflix OSS 的多个项目,形成了 spring-cloud-netflix 项目 。 该项目包含多个子模块,这些子模块对集成的 Netflix 旗下的框架进行了封装,本节将讲述其中一个较为重要的服务管理框架: Eureka。
3.1.1 关于Eureka
Eureka 提供基于 REST 的服务,在集群中主要用于服务管理 。 Eureka 提供了基于 Java 语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。使用该框架,可以将业务组件注册到 Eureka 容器中,这些组件可进行集群部署, Eureka 主要维护这些服务的列表并自动检查它们的状态 。
3.1.2 Eureka架构
一个简单的 Eureka 集群,需要一个 Eureka 服务器、若干个服务提供者 。 我们可以将业务组件注册到 Eureka 服务器中,其他客户端组件可以向服务器获取服务并且进行远程调用。 图 3-1 所示为 Eureka 的架构图 。
图 3- 1 中有两个服务器,服务器支持集群部署,每个服务器也可以作为对方服务器的客户端进行相互注册与复制。图 3- 1 中所示的三个 Eureka 客户端,两个用于发布服务,另一个用于调用服务。不管是服务器还是客户端,都可以部署多个实例 ,如此一来, 就很容易构建高可用的服务集群 。
3.1.3 服务器端
对于注册到服务器端的服务组件, Eureka 服务器并没有提供后台的存储, 这些注册的服务实例被保存在内存的注册中心,它们通过心跳来保持其最新状态,这些操作都可以在内存中完成。客户端存在着相同的机制,同样在内存中保存了注册表信息,这样的机制提升了 Eureka 组件的性能,每次服务的请求都不必经过服务器端的注册中心 。
3.1.4 服务提供者
作为 Eureka 客户端存在的服务提供者,主要进行以下工作:第一、向服务器注册服务;第二、发送心跳给服务器;第三、向服务器端获取注册列表。
当客户端注册到服务器时,它将会提供一些关于自己的信息给服务器端,例如自己的主机、端口、健康检测连接等 。
3.1.5 服务调用者
对于发布到 Eureka 服务器的服务,服务调用者可对其进行服务查找与调用,服务调用者也是作为客户端存在的,但其职责主要是发现与调用服务。在实际情况中,有可能出现本身既是服务提供者,又是服务调用者的情况。例如在传统的企业应用三层架构中,服务层会调用数据访问层的接口进行数据操作,它本身也会提供服务给控制层使用。
本节对 Eureka 进行了介绍,读者大概了解 Eureka 架构及各个角色的作用即可,说一千道一万,不如来个案例实际,下一节将以一个案例来展示 Eureka 的作用。