上个章节,笔者初步介绍了SpringBoot和SpringCloud的关系。这个章节,笔者会对SpringCloud的Eureka进行讲解。
首先,我们要知道,SpringCloud Eureka 是基于Netflix Eureka进行了二次封装。其次呢,SpringCloud Eureka 是由两个组件组成:1.Eureka Server(注册中心),2.Eureka Client(服务注册)。Server端就是供服务注册的服务器,Client端是用来简化服务和服务器之间的交互,作为轮询负载均衡器,并提供服务的故障切换知识。简单来说就是Server端就是注册中心。系统中的其他服务则是Client端,连接到注册中心,并发送心跳维持连接。
服务注册中心Eureka实现:
1.首先需要注意的地方,新建项目时选择Eureka Server,同时注意右上角SpringBoot版本。
2.怎么定义当前服务是注册中心呢,其实很简单,我们需要在启动类上加个注解(@EnableEurekaServer)
当我们配置好,启动服务后,访问此服务,会有如下页面,需要注意的是框红框的地方,就是注册到这个注册中心的所有服务,当然,目前并没有服务注册进来。
虽然我们服务启动了,但是我们会在控制台看见如下报错信息:
这报错信息说明了什么呢,其实问题不大,Server端本身也是个client,只是我们给他指定他是个Server,所以,他也会去注册,所以,我们需要指定注册中心往自身去注册。笔者喜欢用yml文件,所以把application.properties改成了application.yml。
配置完,再启动,就没问题了。
服务提供方: EurekaClient
每一个服务注册之后需要向注册中心发送心跳,当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。EurekaServer 从每个client服务接收心跳消息。 如果心跳超时,则通常将该服务从EurekaServer中删除。
一样,新建项目时,需要注意:
2.然后再启动类指定此服务是客户端(加上@EnableEurekaClient注解)
当然了,我们还要指定此服务往那个注册中心去注册,所以,需要在配置文件进行如下配置:
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
hostname: clientName #自定义链接名
spring:
application:
name: client
配置完,启动此客户端服务,当我们在访问我们注册中心地址时,会看到如下,表明已有服务注册到注册中心,并已发送心跳维持连接。
到这里,单个服务和单个注册中心的注册已经结束了,大家可以试试启动多个注册中心,然后启动多个服务去同时注册这两个注册中心。(需要注意注册中心的相互注册问题)。