Nacos简介以及作为注册/配置中心与Eurekaapollo的选型比较

Posted 爱上口袋的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos简介以及作为注册/配置中心与Eurekaapollo的选型比较相关的知识,希望对你有一定的参考价值。

一、Nacos简介

  • Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
  • Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

        Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。

        Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

二、Nacos主要提供以下四大功能

  1.  服务发现与服务健康检查
           
    Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
  2. 动态配置管理
           
    动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序和服务的需要,这使配置更改更加高效和灵活。
  3. 动态DNS服务
            
    Nacos支持加权路由,使您可以更轻松地在数据中心的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。

  4. 服务和元数据管理
            
    Nacos提供易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行状况和指标统计

三、Nacos架构概述

1、整体架构

nacos可充当服务注册中心、配置中心,整体架构如下:

  • provider app:服务提供方,向nacos注册服务信息及元数据
  • consumer app:服务消费方,从nacos获取服务提供方信息,发起服务调用
  • open api:nacos提供了api与客户端交互,通过api注册删除更新服务信息、配置信息等
  • config service:配置服务,存储应用的配置信息,实现配置数据的集中管理与动态更新
  • name service:对象名和其关联的元数据的映射管理,服务发现和 DNS 就是名字服务的2大场景
  • consistency protocol:一致性协议,nacos可集群部署实现高可用,使用raft协议选主与数据局同步
  • nacos console:nacos提供了控制台,方便用户查看、修改nacos中的数据

 


2、集群

        nacos的集群选举算法是自己实现的Raft算法,主要是对于naming服务,动态配置服务是没有用到这个raft集群心跳和数据更新的功能的;

功能点主要有三点:

  • leader选举:使用Raft的leaderdue时间,到期后发起选举,投票过半为leader
  • 心跳:leader定时发送心跳给follower,心跳还可能打包datum(可以关闭)信息给follower节点;follower节点收到心跳重置选举leaderdue避免发生选举,并且如果发现datum数据有变化会更新内存和本地文件缓存,数据变化term会增加100,会删除dead的datum

  • 数据更新:每次数据更新的时候,如果请求发送到follower节点会转发给leader处理数据,由leader先更新本地数据,然后分别异步发送给其他follower,如果超过半数的follower更新成功那么数据就更新成功了。

注:
    1)datum指的的对于注册的服务和实例抽象包装
     2)term类似于zookeeper的zxid;term投票时会添加1,数据更新会增加100;zk的是分为前 32位和后32位分别累计选举年代和数据更新递增,这里不赘述。


四、主流配置中心对比

 

什么叫做灰度发布:

     发布新版本应用时,为了保证应用不中断,老版本不停机的同时,启动新版本,并对新版本的流量做控制,同时搜集新版本的运行情况,甚至对新版本做自动化测试,新版本测试无误之后,再将用户流量一点一点导入到新版本上,如果发现异常,应该能够快速切换为老版本 。

对比:

        从配置中心角度来看,性能方面Nacos的读写性能最高,Apollo次之,Spring Cloud Confifig依赖Git场景不适合开 放的大规模自动化运维API。功能方面Apollo最为完善,nacos具有Apollo大部分配置管理功能,而Spring Cloud Confifig不带运维管理界面,需要自行开发。Nacos的一大优势是整合了注册中心、配置中心功能,部署和操作相比 Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作


五、注册中心与配置中心横向对比

1、Nacos与eureka注册中心对比 

2、服务配置中心对比

 nacos具有Apollo大部分功能,最重要的是配置中心与注册中心打通,可以省去我们在微服务治理方面 的一些投入(比如通过动态配置来启停线程池等操作)。


3、初步选型结论

初步结论为:使用Nacos代替Eureka和apollo,主要理由为:

相比与Eureka:

  • Nacos具备服务优雅上下线和流量管理(API+后台管理页面),而Eureka的后台页面仅供展示,需要使用api操作上下线且不具备流量管理功能。
  • 从部署来看,Nacos整合了注册中心、配置中心功能,把原来两套集群整合成一套,简化了部署维护
  • 从长远来看,Eureka开源工作已停止,后续不再有更新和维护,而Nacos在以后的版本会支持SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。同时来说,Nacos 计划实现 Service Mesh,是未来微服务的趋势
  • 从伸缩性和扩展性来看Nacos支持跨注册中心同步,而Eureka不支持,且在伸缩扩容方面,Nacos比Eureka更优(nacos支持大数量级的集群)。
  • Nacos具有分组隔离功能,一套Nacos集群可以支撑多项目、多环境。

相比于apollo:

  • Nacos部署简化,Nacos整合了注册中心、配置中心功能,且部署相比apollo简单,方便管理和监控。
  • apollo容器化较困难,Nacos有官网的镜像可以直接部署,总体来说,Nacos比apollo更符合KISS原则
  • 性能方面,Nacos读写tps比apollo稍强一些

以上是关于Nacos简介以及作为注册/配置中心与Eurekaapollo的选型比较的主要内容,如果未能解决你的问题,请参考以下文章

nacos简介以及作为注册/配置中心与Eurekaapollo的选型比较

Nacos简介以及作为注册/配置中心与Eurekaapollo的选型比较

Consule作为注册中心配置实例

SpringCloud Alibaba——Nacos服务注册与配置中心(一作为服务注册中心)

SpringCloud Alibaba——Nacos服务注册与配置中心(一作为服务注册中心)

SpringCloud Alibaba——Nacos服务注册与配置中心(二作为服务配置中心)