SpringCloud(2) 注册中心Eureka、Nacos

这篇具有很好参考价值的文章主要介绍了SpringCloud(2) 注册中心Eureka、Nacos。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景

  • 注册中心是微服务中必须要使用的组件,考察我们使用微服务的程度。
  • 注册中心的核心作用是:服务注册和发现。
  • 常见的注册中心:Eureka、Nacos、Zookeeper

下面我们以 Eureka 注册中心为例,说一下注册中心的作用:

2.Eureka 注册中心

假如我们有一个订单服务 order-service,需要消费用户服务 user-service,而 user-service 是集群部署,有三个节点:8081,8082,8083,那么我们的订单服务应该调用哪一台呢?如果后续又增加了 8084、8085 两个节点后又该怎么调用呢?

所以这时候我们就需要用到注册中心来对服务进行管理了。这里涉及两个概念:

  • user-service 用户服务,是作为服务提供者
  • order-service 订单服务,是作为服务消费者

SpringCloud(2) 注册中心Eureka、Nacos

我们如何利用注册中心来共享服务的地址呢?

1)首先,当服务提供者启动服务的时候,就会把自己的信息注册到注册中心中,注册中心就会保存服务提供者的这三个节点的地址和端口了。

2)其次,因为目前的远程调用都是相对的,假如有其他微服务也需要去调用 order-service 微服务,那么就需要将订单服务也注册到注册中心上。注册中心也就会保存 order-service 微服务的地址了。

3)当注册中心保存好这些信息之后,服务消费者就回去注册中心拉取这些信息了。比如说,order-service 调用 user-service 就会拉取到 8081、8082、8083 三个地址,那么应该选择哪个地址去调用呢?这时候,在 user-service 内部会做一个负载均衡,假设选中了8081,那么 order-service 就会直接调用 8081 的 user-service 服务。

以上就是 Eureka 的基本工作流程。服务注册主要指的是服务提供者把自己的信息注册到注册中心中,然后由服务提供者去注册中心去拉取,发现服务提供者的信息。

假如三台 user-service 服务提供者中,有一台宕机了,那么这时候应该怎么办呢?

SpringCloud(2) 注册中心Eureka、Nacos

是这样的,服务提供者的每一个微服务都会每隔30秒向注册中心发送一个心跳进行续约,证明当前是一个健康的实例。假如某个实例一直没有发送请求,比如8083节点挂了,注册中心如果90秒没有收到心跳,注册中心就会认为某一台实例挂机了,然后在服务列表中把8083的服务干掉了。那么相对应的 order-service 服务消费者去注册中心拉取信息的时候,就会发现8083节点不在了,只剩下8081和8082了,这个实际上就是服务的健康监控

3.Nacos 注册中心

Nacos 和 Eureka 的思路还是基本一致的,我们的服务提供者需要把自己的信息注册到 Nacos,服务消费者需要去注册中心去拉取数据,通过这种方式来获取服务列表信息,比如 IP和端口地址等。同样 Nacos 也有健康检测,服务提供者也会定期发送自己的心跳到 Nacos,证明当前某个节点是存活的。这里不同的是有一个名称:临时实例

SpringCloud(2) 注册中心Eureka、Nacos

下面这是正常在微服务中 Nacos 的配置:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.200.130:8848
        ephemeral: false # 设置为非临时实例,默认true

ephemeral 意思是临时的,平时我们不会去设置它,那么Nacos默认就是采用临时实例。如果使用的是临时实例,那么和我们的 Eureka 差不多,它的健康检测也是通过心跳去检测的。假如我们这里设置了 false,那么当前这个实例就是非临时实例了。

如果是非临时实例,Nacos 注册中心会主动地询问,查看当前的服务提供者是否存活。之前是由服务提供者主动发送心跳告诉注册中心还活着,非临时实例中就反过来了。而 Eureka 中没有非临时实例的概念,这就是一点不同。

另外一点,如果服务提供者的地址发生变更了,Nacos 注册中心会主动推送变更的信息到服务消费者,也就是说 Nacos 不仅仅有 pull,还有 push。

SpringCloud(2) 注册中心Eureka、Nacos

由于 Nacos 注册中心的主动推送,那么服务消费者中服务列表的更新就会更加的及时,从而减少服务不可用的时间。

4.常见面试题

1)服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

  • 我们当时项目采用的 Eureka 作为注册中心,这个也是 Spring Cloud 体系中的一个核心组件。
  • 服务注册: 服务提供者需要把自己的信息注册到 Eureka,由 Eureka 来保存这些信息,比如服务名称、IP、端口等等。
  • 服务发现: 服务消费者向 Eureka 拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择其中一个进行调用。
  • 服务监控: 服务提供者会每隔30秒向 Eureka 发送心跳,报告健康状态,如果 Eureka 服务 90 秒没接收到心跳,服务就会从 Eureka 中删除。

2)Nacos 和 Eureka 有什么区别?

  • Nacos 与 Eureka 的共同点
    1. 都支持服务注册和服务发现;
    2. 都支持服务提供者心跳方式做健康检测。
  • Nacos 与 Eureka 的区别
    1. Nacos 支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    2. 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    3. Nacos 支持服务列表变更消息推送模式,服务列表更新更及时;
    4. Nacos 集群默认采用 AP 方式,当集群中存在非临时实例时,采用 CP 模式;Eureka 采用 AP 方式。
  • Nacos 还支持了 配置中心, Eureka 则只有注册中心,这也是很多人选择使用 Nacos 的一个重要原因。

整理完毕,完结撒花~ 🌻文章来源地址https://www.toymoban.com/news/detail-512801.html

到了这里,关于SpringCloud(2) 注册中心Eureka、Nacos的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud --- Eureka注册中心

    假如我们的服务提供者user-service部署了多个实例,如图 思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口? 有多个user-service实例地址,order-service调用时该如何选择? order-service如何得知某个user-service实例是否依然健康,是不是已经宕

    2023年04月24日
    浏览(36)
  • 【SpringCloud-1】注册中心-Eureka

    springcloud微服务,相对于dubbo这种SOA架构,提供了一站式的全套解决方案,什么意思呢?就是说springcloud不需要依赖其他组件,自己提供了全套的  常规项目需要使用的技术和解决问题的方案。  比如dubbo需要依赖zk作为注册中心,springcloud有自己的注册中心,对于其他如链路追

    2024年02月09日
    浏览(36)
  • SpringCloud:Eureka服务注册中心

    Eureka是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。 在搭建微服务项目时遇到的三个问题: 服务消费者该如何获取服务提供者的地址信息? 如果有多个服务提供者,消费者该如何选择? 消费者如何得知服务提供者的健康状态? Eureka的作

    2024年01月20日
    浏览(37)
  • 注册中心技术Eureka、Nacos

    说明:在微服务框架中,各个服务之间都是独立的。理论上来说,各个服务之间是可以直接通信的,但实际上因为服务之间通信需要管理和规划,如请求怎么负载均衡、请求怎么降级处理等等,所以就需要使用一个技术,对这些服务做到统一管理,称为注册中心,Eureka、Nac

    2024年02月16日
    浏览(46)
  • springCloud Eureka注册中心配置详解

    1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 3、在springBoot项目中创新建一个子模块eureka-server: 4、搭建Eureka 添加依赖:在新建一个子模块的pom.xml中添加依赖 创建配置文件:在resources文件下创建一个名为 application.yml (或 application.properties )的配置文件,并

    2024年02月15日
    浏览(42)
  • 注册中心 —— SpringCloud Netflix Eureka

    Eureka 是一个基于 REST 的服务发现组件,SpringCloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 SpringCloud 的服务注册与发现,同时提供了负载均衡、故障转移等能力,目前 Eureka2.0 已经不再维护,故不推荐使用 Eureka 有两种角色组件: Eureka Server:服务注册中心组件,提供了

    2024年02月13日
    浏览(31)
  • 【SpringCloud入门】-- 初识Eureka注册中心

    目录 1.SpringCloudEureka简介 2.什么是CAP原则? 3.注册中心的概念? 4.SpringCloud其他注册中心 5.搭建Eureka注册中心 6.eureka的配置(主要是server,instance,client) 7.eureka集群概念 8.eureka集群搭建 1.SpringCloudEureka简介 注册发现中心Eureka,意为“发现了”。它是Netflix公司开发的一款基于RES

    2024年02月09日
    浏览(39)
  • SpringCloud-Eureka注册中心

    🍁 博客主页: 👉@不会压弯的小飞侠 ✨ 欢迎关注: 👉 点赞 👍 收藏 ⭐ 留言 ✒ ✨ 系列专栏: 👉SpringCloud专栏 ✨ 知足上进,不负野心。 🔥 欢迎大佬指正,一起学习!一起加油! 服务拆分注意事项 1.单一职责:不同微服务,不要重复开发相同业务 2.数据独立:不要访问

    2024年01月17日
    浏览(39)
  • Springcloud1--->Eureka注册中心

    Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址 提供者:启动后向Eureka注册自己信息(地址,提供什么服务) 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新 心跳(续约):提供者定期通过http方式向Eureka刷

    2024年02月05日
    浏览(36)
  • SpringCloud之Eureka 服务注册中心

    5 Eureka 服务注册中心 5.1什么是 Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包