本文属于【夯实Spring Cloud】系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货。系列目录如下:

【夯实Spring Cloud】Dubbo沉睡5年,Spring Cloud开始崛起!
【夯实Spring Cloud】Spring Cloud中基于maven的分布式项目框架的搭建
【夯实Spring Cloud】Spring Cloud中的Eureka服务注册与发现详解
【夯实Spring Cloud】Spring Cloud中如何完善Eureka中的服务信息
【夯实Spring Cloud】Spring Cloud中使用Eureka集群搭建高可用服务注册中心
【夯实Spring Cloud】Spring Cloud中的Eureka和Zookeeper的区别在哪?
【夯实Spring Cloud】Spring Cloud中使用Ribbon实现负载均衡详解(上)
【夯实Spring Cloud】Spring Cloud中使用Ribbon实现负载均衡详解(下)
【夯实Spring Cloud】Spring Cloud中自定义Ribbon负载均衡策略
【夯实Spring Cloud】Spring Cloud中使用Feign实现负载均衡详
【夯实Srping Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)
【夯实Srping Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(下)
【夯实Spring Cloud】Spring Cloud中使用Zuul实现路由网关详解
【夯实Spring Cloud】Spring Cloud分布式配置中心详解
【夯实Spring Cloud】未完待续


1. 什么是Eureka?官方解释

官方的解释是这样子的:Eureka 是 Netflix 的一个子模块,也是核心模块之一,Eureka 是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。这就类似于 Dubbo 的注册中心,比如 Zookeeper。

而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server 并维持心跳连接。这样系统的维护人员可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如 Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

官方github:https://github.com/Netflix/eureka

2. 我的解释

我的解释:现在有很多创业公司,很多城市都有一些经济开发区,在经济开发区有很多写字楼,多个创业公司都会注册进经济开发区大楼,租一间写字楼作为办公基地。

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

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

PS:技术解决方案,大部分源自于生活,就是这个道理,所以我们要做一个懂生活的技术人。

3. Eureka的架构

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

Eureka Server 提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在 Eureka 的界面(下文会说明)中直观的看到。

Eureka Client 是一个 Java 客户端,用于简化 Eureka Server 的交互,客户端同时也具备一个内置的、使用轮询(roud-robin)负载算法的负载均衡器。在应用启动后,将会向 Eureka Server 发送心跳(默认周期为30秒)。如果Eureka Server 在多个心跳周期内没有接收到某个节点的心跳。Eureka Server 将会从服务注册表中把这个服务节点移除(默认90秒)。

4. Eureka 架构的代码实现

从上面的架构图中可以看出,Eureka 服务注册和发现架构主要有三个角色构成:Eureka 服务端、Eureka 客户端(微服务提供方)和服务消费端(微服务消费方)。下面结合实际项目工程,详细总结一下工程的构建。

4.1 Eureka Server 端

Eureka Server 端提供服务注册和发现。我们首先创建一个 Eureka Server工程:microservice-eureka01,之所以用01,因为后面我要搭建 Eureka 集群,所以暂且先就一个 eureka01。具体创建方式和本系列第二篇文章一样,不再赘述。

我们新创建一个服务,一般分三步走:导入依赖、配置文件、启动注解。我们一步步来分析。

首先导入依赖:我们用的 Spring Cloud 版本是 Finchley,依赖如下:

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

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

server:port: 7001eureka:instance:#eureka服务端的实例名称hostname: eureka01client:# false表示不向注册中心注册自己register-with-eureka: false# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务fetch-registry: falseservice-url:#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

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

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

/*** eureka-server* @author shengwu ni* '@EnableEurekaServer' 注解表示服务器端启动类,接受其他微服务注册进来*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer01 {public static void main(String[] args) {SpringApplication.run(EurekaServer01.class, args);}
}

OK,接下来启动服务,在浏览器输入localhost:7001,如果出现下面的网页,说明 Eureka server 服务OK。这就是 Eureka 的可视化界面,可以监控一些注册进来的服务信息,下文我再详解。

4.2 Eureka Client 端

Eureka Client 端即服务的提供方,将自身服务注册到 Eureka Server,从而使服务消费方能够找到。我们将上一节Spring Cloud中基于maven的分布式项目框架的搭建中的 microservice-order-provider01(端口8001)改造成 Eureka client 端。

还是分三步走:导入依赖、配置文件、启动注解。

Eureka Client 端所依赖的注解如下:

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

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

spring:application:name: microservice-order # 对外暴露的服务名称# 客户端注册进eureka服务列表里
eureka:client:service-url:defaultZone: http://eureka01:7001/eureka/

可以看到,我们给该服务起了个名称,该名称是服务对外暴露的名称。除此之外,我们指定了将该 Client 端注册到哪个 Eureka 服务列表里,这里的 http://eureka01:7001/eureka/ 就是上面我们定义的 Eureka Server 的服务地址。这样就可以将 Eureka Client 端和 Eureka Server 端联系起来了。

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

/*** 订单服务* @author shengwu ni* "@EnableEurekaClient" 服务启动后会自动注册到eureka服务中心*/
@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.itcodai.springcloud.dao")
public class OrderProvider01 {public static void main(String[] args) {SpringApplication.run(OrderProvider01.class, args);}
}

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

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

4.3 服务消费端

我们还使用上一篇Spring Cloud中基于maven的分布式项目框架的搭建中的 microservice-order-consumer 来测一下即可。启动该项目,在浏览器中输入:http://localhost:8080/consumer/order/get/list,如果正常获取 json 数据,说明服务OK。

[{"id":1,"name":"跟武哥一起学 Spring Boot","price":39.99,"dbSource":"microservice01"},
{"id":2,"name":"跟武哥一起学 Spring cloud","price":39.99,"dbSource":"microservice01"}]

源代码下载地址:https://gitee.com/eson15/springcloud_study


源码下载地址:https://gitee.com/eson15/springcloud_study

更多优质文章请关注我的微信公众号【武哥聊编程】,回复“资源”、“架构”、“简历”等关键词,可以领取海量优质的视频学习资源。大家共同进步。

【夯实Spring Cloud】Spring Cloud中的Eureka服务注册与发现详解相关推荐

  1. eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解

    一.Eureka概述 (1)Eureka是什么 Eureka是一个用于服务注册与发现的框架,本身是一个基于Rest的服务. (2)Eureka的组件有哪些? Eureka的组件可分为Eureka Se ...

  2. Spring Boot(2.1.2.RELEASE) + Spring Cloud (Finchley.RELEASE)搭建服务注册和发现组件Eureka

    前言:由于版本原因,部分关于Spring Cloud的书中使用的是Spring Boot 1.x 版本,很多配置或名称在新版本中已经发生了改变.此篇文章记录的是使用较新的Spring Boot 2.x ...

  3. Spring Cloud (4)---Eureka(服务注册与消费详解)

    Spring Cloud (一)Eureka(服务注册与消费详解) Spring Cloud Eureka(服务注册与消费详解) 1.Spring Cloud Eureka 服务注册中心 Eureka ...

  4. 详解Eureka服务注册与发现和Ribbon负载均衡【纯理论实战】

    Eureka服务注册与发现 Eureka简介 在介绍Eureka前,先说一下CAP原则 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability ...

  5. 二、Eureka服务注册与发现

    SpringCloud系列目录: 一.SpringCloud简介 二.Eureka服务注册与发现 三.Eureka注册与发现之Eureka Comsumer 四.Eureka.Server Provi ...

  6. 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)

    跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...

  7. springcloud Eureka服务注册和发现

    一,Eureka基本介绍: Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构 ...

  8. Eureka服务注册与发现:什么是服务注册与发现,Server注册中心

    Eureka服务注册与发现 一套微服务架构的系统由很多单一职责的服务单元组成,而每个服务单元又有众多运行实例.例如,世界上最大的收费视频网站Netflix的系统是由600多个服务单元构成的,运行实例的 ...

  9. SpringCloud[01]Eureka服务注册与发现

    文章目录 Eureka服务注册与发现 1. Eureka基础知识 1. 什么是服务治理 2. 什么是服务注册与发现 3. Eureka包含两个组件:**Eureka Server** 和 **Eure ...

最新文章

  1. R语言ggplot2可视化分面图(faceting)、并设置每一个分面中的条形图都是排序的(bars are in order in each per facet of facet_warp)
  2. agv调度matlab程序,一种分布式AGV调度方法及调度系统与流程
  3. 工作后越来越觉得,丢什么也不能丢账号!
  4. 网络里找不到工作组的计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
  5. JMeter:报错(Content type 'text/plain;charset=UTF-8' not supported)
  6. drawboard pdf拆分文件_PDF处理神器,几秒钟搞定格式转换+压缩+加水印+解密!
  7. 使用jquery插件报错:TypeError:$.browser is undefined的解决方法
  8. 看完此文章若你还不能完美的入门Python,我将永远退出IT界
  9. PowerDesigner 使用记录
  10. vue.js详细教程--优优优
  11. 如何便捷的获取AD(Altium Designer)封装、以及如何从PCB工程中导出封装库、封装库安装
  12. 天线分类特征学习笔记(1)偶极子天线
  13. vue 倒计时插件_Vue的高性能和高精度倒计时插件
  14. java程序员必备快捷键
  15. Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies 问题解决
  16. Android密码管理器app
  17. 定时打开指定程序软件
  18. 烟台有线电视频率与节目表
  19. html页面在ie上出现404怎么解决,ie浏览器网页上有错误解决方法详解
  20. 2022年湖南省临床执业医师考试第四单元随机模拟题

热门文章

  1. 山东大学《可视化技术》复习(计算机学院)
  2. VR+医疗解决多重问题,全面展示医院硬实力
  3. 不稳定版的python俄罗斯方块
  4. 单片机小精灵t2_51单片机的最小系统
  5. 输入多行数据利用getchar()清理回车键
  6. Datawhale组队学习 Task2-数据分析
  7. 倍福novram实现数据保持
  8. PrimeTime PX Tool 测功耗学习笔记(一)
  9. 手机android主题设置在哪里,手机如何安装Android主题
  10. 多国语言者Sara的外语学习策略