(一)理论知识
1.Eureka工作原理
Spring Cloud框架下的服务发现Eureka包含两个组件,分别是: Eureka Server与Eureka Client.
Eureka Server,也称为服务注册中心。各个服务启动后,会在Eureka Server中进行注册,这样Eureka Server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client也称为服务(服务实例)。作为一个Java客户端,用于简化与Eureka Server的交互。Eureka Client内置一个 使用轮询负载算法的负载均衡器。服务启动后,Eureka Client将会向Eureka Server发送心跳更新服务,如果Eureka Server在多个心跳周期内没有接收到某个服务的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka组件的工作原理,如图1所示。
Eureka Client注册在Eureka Server, Eureka Client中的服务Service是通过REST调用的。Eureka Client还具有缓存功能,它能够从Eureka Server查询当前注册的服务信息并缓存到本地,这样即使Eureka Server宕机,Eureka Client依然可以利用缓存中的信息调用服务。
(二)开发流程
1.更改hosts文件配置
以Windows系统为例,如果要构建集群,需要修改hosts文件,为其添加主机名的映射。以Windows系统为例,如果要构建集群,需要修改hosts文件,为其添加主机名的映射。
2.搭建两个eureka-server
(1)创建项目,引入依赖
使用Spring Initializr方 式创建一个名称为eureka-server和eureka-server-another的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-server,在pom.xml文件中添加Eureka Server依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图2所示。
图2 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在项目启动类EurekaServerApplication.上添加@EnableEurekaServer注解开启Eureka Server功能。
(4)启动服务
测试服务搭建成功,如图3所示。
图3 测试服务搭建成功
3. 搭建两个eureka-provider
(1)创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-provider和eureka-provider-another的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-provider在pom.xml文件中添加EurekaClient和Web依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图4所示。
图4 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在项目启动类EurekaClientApplication.上添加@EnableEurekaClient注解开启Eureka Client功能。
(4)启动服务
测试服务搭建成功,如图5所示。
图5 测试服务搭建成功
4. 搭建一个eureka-consumer
(1)创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-consumer的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-consumer在pom.xml文件中添加EurekaClient和Web依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图6所示。
图6 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在项目启动类EurekaConsumerApplication.上添加@EnableEurekaClient注解开启Eureka Client功能。
(4)启动服务
测试服务搭建成功,如图7所示。
图7 测试服务搭建成功
5.测试
依次启动两个Eureka Server、两个服务提供者一个服务消费者。启动成功后,无论访问哪个Eureka Server,Eureka Server的注册实例都是一样的,访问server1: 7000的页面效果如下图8所示。
图8 测试页面效果
访问server2:7009的页面效果如下图9所示。
图9 访问server2:7009的页面效果
(三)总结
本章主要讲解了服务注册与发现Eureka,首先介绍了Eureka的工作机制,包括Eureka的工作原理、服务提供者和服务消费者,然后通过开发第一个Eureka应用,加深大家对Eureka工作机制的理解,最后在第一个Eureka应用的基础上,搭建了一个Eureka集群,并讲解了Eureka的相关配置。通过本章的学习,希望读者能够掌握Eureka工作机制,理解Eureka在Spring Cloud微服务开发中的重要性。