SpringCloud服务注册与发现-Eureka和Nacos的区别

服务注册和发现原理

701394-20190715145305752-1540993745

服务提供者、服务消费者、服务发现组件这三者之间的关系大致如下:

  • 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息;

  • 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口;

  • 各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件如长时间无法与某微服务实例通信,就会自动注销(即:删除)该实例;

  • 当微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件;

  • 客户端缓存:各个微服务将需要调用服务的地址缓存在本地,并使用一定机制更新(例如定时任务更新、事件推送更新等)。这样既能降低服务发现组件的压力,同时,即使服务发现组件出问题,也不会影响到服务之间的调用。

服务发现组件应具备以下功能:

  • 服务注册表:服务注册表是服务发现组件的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册和注销;

  • 服务注册与服务发现:服务注册是指微服务在启动时,将自己的信息注册到服务发现组件上的过程。服务发现是指查询可用微服务列表及其网络地址的机制;

  • 服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表中移除该实例。

Eureka基本介绍

Eureka是Spring Cloud Netflix微服务套件中的一部分,
Eureka包含两个组件:Eureka ServerEureka Client

Eureka Server提供服务注册服务

各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到

Eureka Client是Java客户端

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

Eureka三大角色:

  • Eureka Server 提供服务注册和发现

  • Service Provider服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到

  • Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务

Nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos 的关键特性包括:

  • 服务发现和服务健康监测

      Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
      
      Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
    
  • 动态配置服务

      动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
      
      动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
      
      配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
      
      Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
    
  • 动态 DNS 服务

      动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
      
      Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.
    
  • 服务及其元数据管理

      Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
    

Eureka和Nacos区别

eureka

  • 依赖:依赖ZooKeeper

  • 应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现,

  • ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。

  • 版本迭代:目前已经不进行升级

  • 集成支持:只支持SpringCloud集成

  • 访问协议:HTTP

  • 雪崩保护:支持雪崩保护

  • 界面:英文界面,不符合国人习惯

  • 上手:容易

  • 配置中心:不支持

nacos

  • 依赖:不依赖其他组件

  • 应用内/外:属于外部应用,侵入性小

  • ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍)

  • 版本迭代:目前仍然进行版本迭代

  • 集成支持:支持Dubbo 、SpringCloud、K8S集成

  • 访问协议:HTTP/动态DNS/UDP

  • 雪崩保护:支持雪崩保护

  • 界面:中文界面,符合国人习惯

  • 上手:极易,中文文档,案例,社区活跃

  • 配置中心:支持


SpringCloud服务注册与发现-Eureka和Nacos的区别
http://www.wangxiaohuan.com/2020/02/08/2020-02-08/
作者
吃素的左撇子
发布于
2020年2月8日
许可协议