springboot入门到实战之服务注册与发现组件Eureka和Consul的功能

360影视 欧美动漫 2025-05-22 14:43 2

摘要:微服务应用通常是基于分布式集群部署的,当集群实例达到一定数量时,就不得不做服务治理了。将微服务实例集中管理,需要一个服务注册中心与服务发现组件。微服务实例启动后自动注册到注册中心组件中,注册中心维护与实例的连接关系,所有的实例列表用于服务发现。服务发现可以分为

微服务应用通常是基于分布式集群部署的,当集群实例达到一定数量时,就不得不做服务治理了。将微服务实例集中管理,需要一个服务注册中心与服务发现组件。微服务实例启动后自动注册到注册中心组件中,注册中心维护与实例的连接关系,所有的实例列表用于服务发现。服务发现可以分为客户端模式与服务端模式。客户端模式首先从服务注册中心获取服务列表,然后在客户端进行服务调用;服务端模式则直接向服务注册中心发送请求,服务注册中心直接调用服务实例并返回结果。本节主要介绍服务注册与发现组件Eureka和Consul的功能。

Eureka是Netflix公司开源的用于服务注册和发现的框架。从2018年7月份开始,Netflix宣布不再维护Eureka开源代码。但是SpringCloud集成了Eureka到子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka分为Eureka Server端与Eureka Client端。Eureka Server端提供服务注册功能,微服务启动后,调用注册接口进行服务注册;

Eureka Server端还会维护所有可用的服务节点信息,同时提供页面,可以查看注册过的服务。Eureka Client端提供与Eureka Server端的交互,它内嵌在微服务中,向Eureka Server端发送心跳检测,提供注册和续租等服务。

Eureka架构如图5.12所示。

下面列举一个简单的Eureka使用示例。

(1)创建一个eureka-server工程,应用需要依赖spring-cloudstarter-netflix-eureka-server包,修改配置文件如下:

eureka:

client:

register-with-eureka: false

fetch-registry: false

serviceUrl:

defaultZone: http://localhost:8080/eureka/

(2)在启动类中添加注解@EnableEurekaServer,然后启动工程。

(3)新建客户端工程eureka-client,应用需要依赖springcloud-starter-netflix-eureka-client包,修改配置文件如下:

eureka:

client:

service-url:

defaultZone: http://localhost:8080/eureka/

(4)在启动类中添加注解@EnableDiscoveryClient,然后启动工程,访问Eureka界面即可看到客户端已经注册到服务端了。

Consul是HashiCorp公司推出的开源软件,也可以实现服务注册与服务发现的功能。Consul主要有以下几种特性:

服务发现:服务通过Consul客户端注册到Consul服务端,然后可以通过Consul服务端进行服务发现查询。

健康检查:Consul客户端可以对服务提供相应的健康检查。

数据存储:Consul提供了Key/Vaule存储方式,应用程序可以设置相关的配置数据。

多数据中心:不依赖其他第三方工具即可使用多数据中心。

Consul可分为Server端和Client端两种角色。Server端保存配置、选举和维护状态等复杂的逻辑,Client端负责转发请求到服务端。

Consul使用时需要自己安装,步骤如下:

(1)在官网下载Consul,网址为https://www.consul.io/downloads.html,然后需要在PATH环境变量中添加安装目录。

(2)执行consul --version命令查看版本,本例使用的是1.8.4版本。

(3)想使用Consul,需要启动Agent。有两种启动方式,一种是server方式,一种是client方式。执行命令如下:

consul agent -server -ui -bootstrap-expect=3 -data

dir=/data/consul

-node=server-1 -client=0.0.0.0 -bind=127.0.0.1 -

datacenter=dc1

(5)Spring Boot整合Consul需要依赖spring-cloud-starterconsul-discovery包。另外,spring-boot-starter-actuator可以提供健康检查。

(6)修改Spring Boot项目的application.yml配置文件如下:

spring:

cloud:

consul:

host: 127.0.0.1

port: 8500

discovery:

service-name: ${spring.application.name}

tags: test=consul

healthCheckPath: /health

healthCheckInterval: 15s

来源:大数据架构师

相关推荐