分布式与微服务区别,Nacos配置中心动态刷新原理,Nacos和Eureka有什么区别

1.分布式与微服务区别?

  1. 概念层面

  2. 分布式系统:是指一组独立的计算机节点通过网络协同工作,共同完成一个大任务,这些节点各自拥有本地资源并在分布式的环境中相互协作。分布式系统的设计目标是为了提高系统的可靠性、可用性、可扩展性和稳定性

  3. 微服务架构:是一种特殊的分布式系统实现方式,它强调将单一的应用程序拆分成一系列小型、互相独立的服务。每个微服务都是一个小型的、完整的业务单元,包含了自己的业务逻辑、数据库及对外暴露的API接口。每个微服务都可以独立开发、部署、扩展和维护,并且可以使用不同的技术栈。微服务架构的核心理念是围绕业务能力组织服务,强调服务之间的松耦合和高内聚。

  4. 粒度划分

  5. 分布式系统中的服务划分粒度可大可小,可以包含多个紧密相关的业务功能。

  6. 微服务倾向于更为细粒度的服务划分,每个服务只专注于一个特定的业务功能,并力求做到“做一件事并做好”。

  7. 目标

  8. 分布式系统旨在解决大型系统的计算能力和存储能力扩展问题,通过负载均衡、冗余备份等方式提高系统整体性能和稳定性。

  9. 微服务架构则着重于软件工程方面的优化,如简化开发流程、提升团队协作效率、加速新功能上线、适应快速变化的业务需求等。微服务进一步提升了系统的灵活性,但也带来了服务间通信、数据一致性、运维复杂性等方面的挑战。

2.美团面试题-Nacos配置中心动态刷新原理(重要度9.5分)

Nacos 使用长轮询机制来实现实时配置更新。具体过程如下:

1.客户端发起请求:客户端通过后台线程发起一个 HTTP 请求到 Nacos 服务端,用于监听配置变化。

2.服务端挂起连接:Nacos 服务端接收到请求后,会挂起(hold)这个 HTTP 连接一段时间(例如 30 秒),在此期间服务端监控配置文件的变化。

3.无变化情况:若在这段时间内没有检测到配置文件有任何变更,服务端将释放连接并向客户端返回一个指示,表明配置没有更新。

4.配置变更情况:如果在挂起期间检测到配置文件发生变化,服务端会立即释放连接并将最新的配置推送给客户端。

5.循环轮询:无论哪种情况,客户端在接收完响应后,会在短暂延迟(如 10 毫秒)之后重新发起一个新的 HTTP 请求,从而形成循环轮询机制以持续监听配置更新。

这种方式使得客户端能够及时获取到最新的配置信息,同时减少了不必要的频繁请求。

Nacos配置中心动态刷新原理.mp4(15.9 MB)- 0%

3.腾讯面试题:Nacos和Eureka有什么区别(重要度3分)

一、架构与模式

  1. Eureka

    • 采用了客户端-服务器(Client-Server, CS)架构。
    • Eureka Server作为服务注册中心,负责维护服务实例列表。
    • Eureka Client作为服务提供者或消费者,定期向Eureka Server发送心跳来维持服务实例的有效性。
    • 只支持AP(Availability优先)模式。
  2. Nacos

    • 采用了高可用的对等(Peer-to-Peer, P2P)设计,所有的server节点都是同等作用。
    • 支持AP(Availability优先)和CP(Consistency优先)两种模式。
    • 根据配置识别CP或AP模式,如果注册Nacos的client节点注册时是ephemeral=true即为临时节点,那么Nacos集群对这个client节点效果就是AP,反之则是CP。

二、实例与健康检查

  1. Eureka

    • 只支持临时实例。
    • 对实例的健康检查采用心跳模式。
  2. Nacos

    • 实例有永久和临时实例之分。
    • 对临时实例采用心跳模式检测,对永久实例采用主动请求来检测。
    • 支持HTTP和TCP两种健康检查方式,TCP连接方式可以更精确地判断服务实例是否真正可用。

三、服务发现机制

  1. Eureka

    • 采用基于拉模式的服务发现机制。
    • Eureka Client定期从Eureka Server拉取服务信息更新本地缓存。
    • 这种方式在服务数量较少时工作良好,但在大规模部署时可能会导致较高的网络负载。
  2. Nacos

    • 采用基于推模式的服务发现机制。
    • Nacos Server会主动推送服务信息的变化给Nacos Client。
    • 这种方式使得服务发现更为实时,尤其在AP模式下,适合大规模的服务部署。

四、通信与连接管理

  1. Eureka

    • 基于HTTP RESTful API进行通信。
    • 客户端和服务端之间的交互依赖于HTTP请求,集成相对简单,但可能在服务间通信时不如TCP高效。
    • 采用短连接的方式,服务实例与Eureka Server之间的通信基于定时的心跳消息,每次通信后连接可能会关闭。
  2. Nacos

    • 同时支持HTTP和TCP两种通信方式。TCP方式的引入使得Nacos在服务间的通信上更为高效。
    • 连接管理方式取决于使用的通信协议。使用TCP协议时,可以利用长连接的优势减少建立连接的开销,提高通信效率。

五、自我保护机制

  1. Eureka

    • 有一个自我保护机制。当在短时间内续约失败的比例达到一定阈值时,Eureka Server会进入自我保护模式,避免误删服务实例。
    • 这种机制有助于防止网络分区故障导致的服务不可用,但保护机制相对固定,缺乏灵活性。
  2. Nacos

    • 保护机制更为灵活,允许用户自定义健康检查和保护策略。
    • 可以根据具体的业务需求调整服务发现的行为。

六、元数据管理与功能丰富性

  1. Eureka

    • 元数据信息较为简单,主要关注服务的基本信息,如服务名称、IP地址和端口号等。
  2. Nacos

    • 元数据管理更为丰富,支持服务分类、权重、健康状态等信息。
    • 这种丰富的元数据支持使得Nacos在服务治理方面提供了更多的灵活性和控制力。

七、适用场景与选择建议

  1. Eureka

    • 对于小规模应用,Eureka提供了简单易用的服务发现机制。
    • 如果服务数量不多,且对性能要求不高,Eureka是一个很好的选择。
    • 但需要注意的是,Netflix已经宣布停止对Eureka的积极开发和支持,这可能意味着Eureka在未来不会添加新功能,甚至可能无法及时修复一些安全漏洞和关键性问题。
  2. Nacos

    • 对于大规模应用,Nacos提供了更强大的服务发现和管理功能。
    • 如果服务数量较多,且对性能和可用性有较高要求,Nacos是一个更好的选择。
    • Nacos以其先进的设计理念和丰富的功能特性,在大规模分布式系统中表现出色。

综上所述,Nacos和Eureka在架构、实例与健康检查、服务发现机制、通信与连接管理、自我保护机制、元数据管理与功能丰富性等方面都存在显著差异。在选择时,应根据具体的应用场景、服务数量、性能要求以及未来的维护和支持等因素进行综合考虑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这孩子叫逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值