当前位置: 代码网 > it编程>编程语言>Java > SpringCloud_Eureka注册中心

SpringCloud_Eureka注册中心

2024年08月01日 Java 我要评论
介绍eureka及其特点和使用

概述

eureka是springcloud的注册中心。
是一款基于rest的服务治理框架,用于实现微服务架构中的服务发现和负载均衡。
在eureka体系中,有两种角色: 服务提供者和服务消费者。
服务提供者将自己注册到eureka服务器,服务消费者从eureka服务器中获取可用的服务列表,并根据负载均衡算法选择其中一个来调用。

特点

  1. 高可用性:eureka服务器采用了分布式架构,可以通过集群搭建来实现高可用性,同时也支持自我保护机制,即当eureka服务器在一段时间内无法与客户端通信时,不会立即清理服务注册表中的信息,而是将其保护起来,以防止因网络问题导致的误删。

  2. 易于扩展:eureka支持通过集群方式进行扩展,只需要增加新的eureka服务器节点即可。

  3. 支持多种语言和框架:eureka是基于rest实现的,因此可以支持多种语言和框架,只需要遵循它的api规范即可。

  4. 灵活的配置:eureka提供了大量可配置项,如心跳间隔、注册信息缓存时间等,可以根据实际情况进行配置。

  5. 易于使用:eureka提供了java客户端库,可以方便地进行服务注册和发现,并且与spring cloud等框架集成良好。

结构和作用

在这里插入图片描述

  1. 注册服务信息
    服务提供者的服务实例启动后,将自己的信息注册到eureka-server(eureka服务端)
    eureka-server保存服务名称到服务实例地址列表的映射关系

  2. 服务发现/服务拉取
    服务消费者根据服务名称,拉去实例地址列表

  3. 负载均衡
    服务消费者从实例列表中利用负载均衡算法选中一个实例地址

  4. 远程调用
    服务消费者向实例地址发起远程调用

  5. 心跳续约

  • 服务提供者实例会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
  • 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
  • 服务消费者拉取服务时,就能将故障实例排除了

注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

实现eureka

  1. 创建eureka-server服务
    新建模块,并在spring initialize中选择eureka server的依赖
    可以看到在新建模块的依赖中加入了
		<dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
        </dependency>
  1. 在eureka的启动类上加上@enableeurekaserver注解
    开启eureka的注册中心功能

  2. 编写配置文件
    编写一个application.yml文件,内容如下:

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultzone: http://127.0.0.1:10086/eureka
  1. 启动服务并访问http://127.0.0.1:10086
    在这里插入图片描述
    如上页面表示成功

  2. 服务注册
    在对应服务的pom.xml中引入eureka-client依赖

<dependency>
    <groupid>org.springframework.cloud</groupid>
    <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
</dependency>
  1. 修改服务的配置文件
    添加服务名称和eureka地址
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultzone: http://127.0.0.1:10086/eureka
  1. 启动多个服务实例
    复制配置,并且为服务修改名称
    在这里插入图片描述
    在配置中需要修改配置中的端口号,就需要使用覆盖配置
    勾选允许多个实例
    在这里插入图片描述
    启动多个服务实例后,可在该服务的空间中看到服务空间中数量增多,并且占用2个端口号
    在这里插入图片描述

  2. 服务发现
    服务发现、服务注册统一封装在eureka-client依赖中,所以同样注入该依赖即可
    同样需要修改配置文件,同样是服务名称和注册中心地址

spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultzone: http://127.0.0.1:10086/eureka
  1. 服务拉取和负载均衡
    从服务注册中心eureka-server中拉去服务的实力列表并实现负载均衡
    需要在服务消费者的启动类上的resttemplate这个bean添加@loadbalanced注解
    然后在对应服务中将resttemplate的url中的ip:port改为服务名即可
    spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。
    示例:
    http://localhost:8081/user/改为http://userservice/user/
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com