文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringCloud Eureka服务治理之服务注册服务发现

2022-11-13 13:56

关注

什么是Eureka

Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心,用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 进行了二次封装,主要负责完成微服务架构中的服务治理功能。

Spring Cloud Eureka 是一个基于 REST 的服务,并提供了基于 Java 的客户端组件,能够非常方便的将服务注册到 Spring Cloud Eureka 中进行统一管理。

Eureka核心概念服务注册和服务发现

服务注册

拆开来看注册和中心。注册比如用户注册,就是将自己的信息注册在某个平台上。中心可以理解成一个统一管理信息的平台。所以注册中心顾名思义是统一管理所有注册信息的平台。

指的是服务在启动时将自身的信息注册到注册中心中,方便信息进行统一管理。服务注册是客户端向注册中心提交信息的动作。

服务发现

指的是从注册中心获取对应服务的信息,是客户端向注册中心拉取pull信息的动作。

Eureka实战

Eureka服务端单节点构建

打开start.spring.io/ 或者阿里云的快速start start.aliyun.com/bootstrap.h… ,开始构建对应的服务端项目。推荐使用阿里云的快速start,因为访问速度更快些。

自动生成完成后,在resource目录下,新建application.yml文件替换原来的application.properties。内容如下:

#应用名称
spring:
  application:
    name: eureka-server
server:
  port: 8001
eureka:
  client:
    # 是否将自己实例注册到Eureka Server中
    register-with-eureka: false
    # 是否应从Eureka Server获取Eureka注册表信息
    fetch-registry: false

在SpringBoot的启动类上添加@EnableEurekaServer 注解,表示是Eureka 服务端。 上述配置完成后,一个单节点的Eureka服务端就配置完成了,启动效果如下:

访问http://localhost:8761/ 可以进入eureka控制台。

目前还没有任何一个服务注册到 Eureka 中,不过从上图中,我们还是可以看到关于 Eureka 服务器内存、CPU 、IP等的相关信息。

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE。

图中红色警告翻译为:紧急!Eureka已经不能确认这些已经启动的实例是否可用,由于最近的续订次数小于续订阈值(续订期望值),为了安全起见(实例可用),当前这些实例不会删除。 这是因为Eureka进入自我保护模式(SELF PRESERVATION MODE)。

Eureka服务端集群构建

单个 Eureka 服务可能存在的单点失效问题,我们通常都需要构建一个 Eureka 服务器集群来确保注册中心本身的可用性。与传统的集群构建方式不同,如果我们把 Eureka 也视为一个服务,也就是说 Eureka服务自身也能注册到其他 Eureka 服务上,从而实现相互注册,并构成一个集群。 同样可以通过单节点构建步骤构建两个Eureka Server服务A和B。对应的yml配置如下:

server: 
  port: 8761 
eureka: 
  instance: 
    hostname: eurekaA 
  client: 
    serviceUrl:
	   defaultZone: http:// eurekaB:8762/eureka/ 
server: 
  port: 8762 
eureka: 
  instance: 
    hostname: eurekaB 
  client: 
    serviceUrl:
	   defaultZone: http://eurekaA:8761/eureka/ 

**eureka.instance.hostname **是Eureka 实例管理类配置项 ,用于指定当前 Eureka 服务的主机名称。 需要在本机的hosts文件中添加以下信息:

127.0.0.1 eurekaA 
127.0.0.1 eurekaB

Eureka客户端构建

客户端引入的pom坐标有差异,需要引入客户端坐标:

<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
</dependency> 

在启动类上需要加@EnableDiscoveryClient注解表示是Eureka客户端。

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientProviderApplication {
	public static void main(String[] args) {
		SpringApplication.run(EurekaClientProviderApplication.class, args);
	}
}

yml配置如下:

spring: 
  application: 
	name: eureka-client  
server: 
  port: 8081 
eureka: 
  client: 
    serviceUrl: 
    #指定eureka服务端地址,如果是集群则通过逗号分隔
	  defaultZone: http://localhost:8761/eureka/ 

配置完成后可以在eureka控制台查看到相关注册信息。

以上就是SpringCloud Eureka服务治理服务注册和服务发现的详细内容,更多关于SpringCloud Eureka服务的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯