引用:服务注册与发现,就像是租房子一样

前言

今天洛阳下雨了,唉,没有想到有裹上了羽绒服,不穿冷穿了热的尴尬温度。上学工作这么多年都在外面,家里竟然没有一件春天的外套。

日常闲聊之后,开始今天的芝士环节。

昨天说过了什么是SpringCloud,提到了SpringCloud实际上是很多技术的合集,今天就来学习第一个技术 Eureka。

大白话服务服务注册与发现

Eureka在微服务的体系中,主要的功能是实现服务治理,服务注册与发现的,那么什么是服务注册与发现呢?

在第一篇文章讲到过,微服务就是将项目中的模块按照业务来进行拆分,如上图,商品是一个独立的服务,订单也是独立的服务,还可以根据需要将订单服务部署为两个。然后商品服务需要使用订单的时候,就去调用订单服务。

但是在上图中有几个问题是需要解决的:

  1. 商品服务想要调用订单服务,怎么知道订单服务1 和 订单服务2的地址?如果临时增加一个订单服务3,那么怎么告诉商品服务订单服务3的地址?
  2. 如果订单服务1宕机了,这个时候商品服务如果不知道,依然选择调用已经宕机的订单服务1,会服务调用失败。也就是说:订单服务1宕机了,如何把这个情况即时的告诉其他所有的服务?

    ......

解决以上问题的方案就是:引入服务管理者,就是服务治理。

先举一个生活的小栗子:

  • 在没有互联网的时代,如果要租房子需要找中介,中介就是一个服务管理者的角色
  • 我们是租房者,要找房源,这个关系就像是商品服务找订单服务
  • 那么房源怎么来呢?房东在需要出租房子的时候,去找中介,将自己的房源信息登记到中介那里。这个过程叫做注册
  • 我们要租房子,假如说要租两室一厅,首先需要先找中介要所有房源的注册清单,从清单中可以找到两室一厅。这个过程叫做发现

    这个例子可以帮助大家,理解注册和发现两个过程,以及管理者的角色。

通过以上例子我们得到下图:

服务治理的管理者我们称之为注册中心。

服务注册:每个服务在启动的时候,告诉注册中心自己的位置信息。

服务发现:商品服务想要调用订单服务,先找注册中心获取到所有服务的位置信息,然后找到订单服务的地址,发起调用。

心跳机制:服务启动之后,每过30秒向注册中心心跳一次(就是发送一个消息,告诉注册中心自己还活着),如果注册中心长时间没有收到某个服务的心跳,那么就会认为这个服务已经宕机,就从服务注册列表中删除。

什么是Eureka

Spring Cloud封装了Netlix 公司开发的Eureka模块来实现服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

Eureka 组件

在Eureka的架构中,分为 Eureka Server 和 Eureka client。

Eureka 注册中心 Eureka Server

Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

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

而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

Eureka 客户端 Eureka Client

EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

  • 在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

  • Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势首先可以降低Eureka Server的压力,其次当所有的Eureka Server宕机服务调用方依然可以完成调用

总结

恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。

要掌握SpringCloud更多的用法,请持续关注本系列教程。

欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。

F版本SpringCloud 3—大白话Eureka服务注册与发现的更多相关文章

  1. SpringCloud 进阶之Eureka(服务注册和发现)

    1. Eureka 服务注册与发现 Eureka 是一个基于REST的服务,用于服务的的注册与发现; Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册 ...

  2. SpringCloud学习系列-Eureka服务注册与发现(1)

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

  3. SpringCloud学习系列-Eureka服务注册与发现(2)

    构建 microservicecloud-eureka-7001 eureka服务注册中心Module 1.新建microservicecloud-eureka-7001 2.pom <proj ...

  4. springcloud(二):Eureka服务注册与发现

    Spring Cloud Netflix  该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix ...

  5. SpringCloud学习系列-Eureka服务注册与发现(3)

    修改microservicecloud-provider-dept-8001 1.修改pom 增加内容 <!-- 将微服务provider侧注册进eureka --> <depend ...

  6. 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! Spring Cloud Eureka 基于Netflix Eureka做了二次封装(Spring Clo ...

  7. SpringCloud学习系列-Eureka服务注册与发现(4)

    actuator与注册微服务信息完善 1.主机名称:服务名称修改 当前问题 含有主机名称 修改修改microservicecloud-provider-dept-8001 的yml文件 修改内容 eu ...

  8. SpringCloud的入门学习之概念理解、Eureka服务注册与发现入门

    1.微服务与微服务架构.微服务概念如下所示: 答:微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题.提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务 ...

  9. SpringCloud(二)- 服务注册与发现Eureka

    离上一篇微服务的基本概念已经过去了几个月,在写那篇博客之前,自己还并未真正的使用微服务架构,很多理解还存在概念上.后面换了公司,新公司既用了SpringCloud也用了Dubbo+Zookeeper, ...

随机推荐

  1. loadrunner通过socket测接口

    #include "lrs.h" Action() {     //建立到服务端的连接     lrs_create_socket("socket1",&quo ...

  2. 从wordpress换hexo博客后

    之前用wordpress做blog, 为什么换为hexo呢? 第一 ​ wordpress的文章都保存在服务器的数据库, 维护不是很直观. ​ 而hexo是自己编写markdown文章,本地一份,而b ...

  3. qt creator源码全方面分析(3-1)

    目录 qtcreator.pro 包含qtcreator.pri include(filename) Qt版本判断 message(string) $$运算符 error(string) 包含doc. ...

  4. Murata村田研发向左,制造向右

    前言:Murata村田自1944 年在日本京都创立,是陶瓷无源电子元件.无线连接模块和电源转换技术产品设计和制造领域的全球领导者. Murata 一直在为社会的进步和电子行业的革命贡献自己的力量. 在 ...

  5. 7-7 jmu_python_是否是数 (10 分)

    本题要求从键盘输入一个字符串,判断该串是否属于整数.浮点数或者复数的表示 输入格式: 输入一个字符串 输出格式: 输出yes或no 输入样例: -299 输出样例: yes a = input() t ...

  6. 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rZeOQp 可交互视频 此视频是可 ...

  7. 前端每日实战:74# 视频演示如何用纯 CSS 创作一台 MacBook Pro

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXNNyR 可交互视频 此视频是可 ...

  8. angular - collapse--TemplateRef

    用的ant  collapse组件 需要自定义Header 请忽略前面的dw... 主要是TemplateRef<void> 查了半天.可以实现效果,直接上代码,我也不懂为什么 反正实现了 ...

  9. 编写程序实现根据考试成绩将成绩分为A,B,C,D四档。

    score = float(input("请输入你的成绩:"))if 90 <= score <= 100: print("你的成绩为A档")eli ...

  10. windows服务搭建与删除简单介绍

    安装windows服务: 1 VS的开发命令使用管理员权限打开, 2 installutl.exe /servicename="服务名称"  "服务地址" 卸载 ...