eureka服务注册与发现:搭建注册中心

Posted ybin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eureka服务注册与发现:搭建注册中心相关的知识,希望对你有一定的参考价值。

最近由于工作中需要将原来的spring项目都进行架构调整,要实现应用解耦,所以考虑到通过微服务的方式将应用解耦。所以面临两个选择:dubbo 和spring cloud ,由于项目规模不大,使用dubbo使项目变得有点重,基于项目轻量化的原则,选择了 eureka 来治理服务。

首先用一张图展示 eureka 架构

技术分享图片

图中的Eureka Server 为注册中心, 它主要负责服务的注册、服务管理、对客户端提供服务列表。

spring cloud 为开发者提供了快速构建的工具,所以搭建服务注册中心也变得很简单。

1. 构建工程 

通过IDEA 构建spring boot 工程,我用的是 2.0.3.RELEASE,pom 引入依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
properties 中添加spring cloud 的版本 <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>

引入 spring boot 依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

2. 注册中心配置

配置 application.properties

spring.application.name=eureka-server
#正式环境应该启用IP更容易区分
#eureka.instance.prefer-ip-address=true
eureka.instance.hostname=localhost
#eureka.client.register-with-eureka=fasle
#eureka.client.fetch-registry=false
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

# 自我保护:统计心跳失败比例在15分钟内是否低于85%;如果低于,会将当前实例的注册信息保护起来,使服务信息不会过期,
# 如果客户端在此期间拿到实际上已经不存在的服务实例,会出现调用失败的情况,所以客户端必须要有容错机制,比如断路器等机制
# 测试时关闭自我保护机制,保证不可用服务及时踢出,正式环境应开启
eureka.server.enable-self-preservation=false

在主类上加上注解 @EnableEurekaServer ,然后启动,一个单机版的注册中心就已完成,预览效果:

技术分享图片

红色提示是因为没有开启自我保护。

3. 集群模式

还是通过第一张图我们看到有三个服务中心,每个中心之间是可以互相通信的,这个过程叫做 Replicate ,就是复制注册的意思。每个注册中心会将自己当前实例中已注册的服务通过复制的方式注册到其他节点,注册中心的高可用其实就是每个注册中心自己把自己作为服务向其他注册中心注册自己,这样就形成了一组相互注册的服务注册中心。

修改hosts ,配置三个 hostname 

127.0.0.1  server1

127.0.0.1  server2

127.0.0.1  server3

在集群模式下,修改 applocation.peoperties 配置

#要达到高可用,spring.application.name 每个实例必须配置一样, 以及下面的两个配置必须注释,自定义也不行
#eureka.client.register-with-eureka=true
#eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://server2:8082/eureka/, http://server3:8083/eureka/
defaultZone 需要指向别的服务注册中心才会把它注册到别的注册中心进行服务复制通信,server1中指向server2和server3 ,server2 中指向server1和server3 ,一次类推 

 






























以上是关于eureka服务注册与发现:搭建注册中心的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Eureka服务注册与发现

SpringCloud-Eureka:服务的注册与发现

springcloud-服务注册与发现

Eureka服务注册中心搭建

SpringCloud学习系列之一 ----- 搭建一个高可用的注册中心(Eureka)

Spring Cloud 服务的注册与发现(Eureka)