上个章节,笔者初步介绍了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版本。

spring放弃Eureka springboot eureka_spring放弃Eureka

 

2.怎么定义当前服务是注册中心呢,其实很简单,我们需要在启动类上加个注解(@EnableEurekaServer)

spring放弃Eureka springboot eureka_spring放弃Eureka_02

 

当我们配置好,启动服务后,访问此服务,会有如下页面,需要注意的是框红框的地方,就是注册到这个注册中心的所有服务,当然,目前并没有服务注册进来。

spring放弃Eureka springboot eureka_Eureka_03

虽然我们服务启动了,但是我们会在控制台看见如下报错信息:

spring放弃Eureka springboot eureka_Java_04

spring放弃Eureka springboot eureka_SpringCloud_05

这报错信息说明了什么呢,其实问题不大,Server端本身也是个client,只是我们给他指定他是个Server,所以,他也会去注册,所以,我们需要指定注册中心往自身去注册。笔者喜欢用yml文件,所以把application.properties改成了application.yml。

spring放弃Eureka springboot eureka_spring放弃Eureka_06

配置完,再启动,就没问题了。

服务提供方: EurekaClient

每一个服务注册之后需要向注册中心发送心跳,当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。EurekaServer 从每个client服务接收心跳消息。 如果心跳超时,则通常将该服务从EurekaServer中删除。

一样,新建项目时,需要注意:

spring放弃Eureka springboot eureka_SpringBoot_07

2.然后再启动类指定此服务是客户端(加上@EnableEurekaClient注解)

spring放弃Eureka springboot eureka_SpringCloud_08

当然了,我们还要指定此服务往那个注册中心去注册,所以,需要在配置文件进行如下配置:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    hostname: clientName #自定义链接名

spring:
  application:
    name: client

配置完,启动此客户端服务,当我们在访问我们注册中心地址时,会看到如下,表明已有服务注册到注册中心,并已发送心跳维持连接。

spring放弃Eureka springboot eureka_spring放弃Eureka_09

 

到这里,单个服务和单个注册中心的注册已经结束了,大家可以试试启动多个注册中心,然后启动多个服务去同时注册这两个注册中心。(需要注意注册中心的相互注册问题)。