外行人都能看得懂的Spring Cloud服务注册与发现,错过了血亏!

作者 : 开心源码 本文共2281个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共159人阅读

Spring Cloud 中的服务与发现使用的是?Eureka,什么是 Eureka 呢?我们先来看看官方的解释,而后再看看我的解释。

1. 什么是Eureka(官方版)

Eureka 是 Netflix 的一个子板块,?也是核心板块之一,Eureka 是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只要要使用服务的标识符,即可以访问到服务,而不需要修改服务调用的配置文件了。

而系统中的其余微服务,使用 Eureka 的用户端连接到 Eureka Server 并维持心跳连接。这样系统的维护人员可以通过 Eureka Server 来监控系统中各个微服务能否正常运行。Spring Cloud 的少量其余板块即可以通过 Eureka Server 来发现系统中的其余微服务,并执行相关的逻辑。

是不是看着很别扭?很拗口?看看武哥版的解释。

2. 什么是Eureka(武哥版)

现在有很多创业公司,很多城市都鼓励大学生创业,政府搞了少量经济开发区,里面有很多写字楼,那么这些创业公司即可以注册到经济开发区大楼,租一间写字楼作为自己的办公地点。

那么这里的创业公司就相当于微服务,而开发区大楼的注册登记表就相当于 Eureka。

每个创业公司都要定期向开发区负责人或者者机构交房租和物业费,假如某个创业公司不交物业费了,那么该开发区大楼负责人员就会去要,若屡次不给,那么就会将其移出开发区大楼。这就是 Eureka 的心跳机制。

这样是不是就能明白其原理了?接下来看下 Eureka 的架构图,从宏观上把握一下。

3. Eureka的架构图

Eureka 架构本身主要包含两个组件:Eureka Server 和 Eureka Client,分别表示服务端和用户端。如下图所示:

Eureka Server 提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在 Eureka 的界面(下文会说明)中直观的看到。这就相当于经济开发区的注册登记表,简称“花名册”

Eureka Client 是一个 Java 用户端,用于简化 Eureka Server 的交互,在应用启动后,将会向 Eureka Server 发送心跳。假如Eureka Server 在多个心跳周期内没有接收到某个节点的心跳。Eureka Server 将会从服务注册表中把这个服务节点移除。这就相当于创业公司交房租费,你屡次不交,那就不好心了

4. Eureka架构的实现

根据上面的架构图,我们来搭建一下 Eureka Server和Eureka Client。

Eureka Server端

我们新创立一个服务,一般分三步走:导入依赖、配置文件、启动注解。首先导入依赖:我们用的 Spring Cloud 版本是 Finchley,依赖如下:

接下来是 Spring Boot 项目配置文件:application.yml

我们定义 Eureka Server 的服务端口为7001,而后定义了 Eureka 服务的服务名以及该服务的地址。相关信息见上面的注释。当然咯,要在hosts文件中配置 127.0.0.1 和 eureka01 的映射。

最后在 Spring Boot 工程的启动类中增加?@EnableEurekaServer?注解,表示该服务是 Eureka Server,接受其余微服务注册进来。如下:

OK,接下来启动服务,在浏览器输入eureka01:7001,假如出现下面的网页,说明 Eureka server 服务OK。这就是 Eureka 的可视化界面,可以监控少量注册进来的服务信息。

Eureka Client 端

Eureka Client 端即服务的提供方,将自身服务注册到 Eureka Server,从而使服务消费方能够找到。

创立 Eureka Client,还是分三步走:导入依赖、配置文件、启动注解。Eureka Client 端所依赖的注解如下:

项目配置文件需要增加如下信息:

可以看到,我们给该服务起了个名称,该名称是服务对外暴露的名称。除此之外,我们指定了将该 Client 端注册到哪个 Eureka 服务列表里。

这里的?http://eureka01:7001/eureka/?就是上面我们定义的 Eureka Server 的服务地址。这样即可以将 Eureka Client 端和 Eureka Server 端联络起来了。

最后在 Spring Boot 工程的启动类中增加?@EnableEurekaClient?注解,表示该服务是 Eureka Client,启动后会自动注册到指定的 Eureka Server。如下:

现在我们将 Eureka Server 和 Eureka Client 端都写好了,来测试一下,刚刚 Eureka Server 端已经启动了,现在我们来启动一下这个 OrderProvider01 服务,而后刷新一下 Eureka 可视化界面就可看到该服务已经注册进来了。

以看出,已经有个微服务注册进来了,名字为:MICROSERVICE-ORDER。这个名字从哪来的呢?还记得上面 Eureka Client 中的配置文件吗?里面指定了暴露的服务名称,只不过 Eureka 里默认一律大写而已。也可以看出,该服务的端口是8001。

推荐一个交流学习群:614478470 里面会分享少量资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多 ?点击:加入

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 外行人都能看得懂的Spring Cloud服务注册与发现,错过了血亏!

发表回复