nacos简介以及作为注册配置中⼼与Eureka、apollo的选型⽐较⼀、Nacos简介
Nacos是以服务为主要服务对象的中间件,Nacos⽀持所有主流的服务发现、配置和管理
Nacos主要提供以下四⼤功能
1. 服务发现与服务健康检查
Nacos使服务更容易注册⾃⼰并通过DNS或HTTP接⼝发现其他服务。Nacos还提供服务的实时健康检查,以防⽌向不健康的主机或服务实例发送请求。
2. 动态配置管理
动态配置服务允许您在所有环境中以集中和动态的⽅式管理所有服务的配置。Nacos消除了在更新配置时重新部署应⽤程序和服务的需要,这使配置更改更加⾼效和灵活。
3. 动态DNS服务
Nacos⽀持加权路由,使您可以更轻松地在数据中⼼的⽣产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防⽌应⽤程序耦合到特定于供应商的服务发现API。
4. 服务和元数据管理
Nacos提供易于使⽤的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运⾏状况和指标统计。
1.1 Nacos总体概况
image.png
1.2 Nacos架构
image.png
⼆、注册中⼼与配置中⼼横向对⽐
2.1 Nacos与eureka注册中⼼对⽐
对⽐项⽬
\注册中⼼
Spring Cloud Nacos Spring Cloud Eureka CAP模型⽀持AP和CP模型AP模型
客户端更新服务信息使⽤注册+DNS-f+健康检查模式。 DNS-F客户端使⽤监
听模式push/pull拉取更新信息
客户端定时轮询服务端获取其他服务ip信息并对
⽐,相⽐之下服务端压⼒较⼤、延迟较⼤
伸缩性使⽤Raft选举算法性能、可⽤性、容错性均⽐较好,新加
⼊节点⽆需与所有节点互相⼴播同步信息
由于使⽤⼴播同步信息,集超过1000台机器后
对eureka集压⼒很⼤
健康检查模式/⽅式⽀持服务端/客户端/关闭检查模式,检查⽅式有tcp、
http、sql。⽀持⾃⼰构建健康检查器
客户端向服务端发送http⼼跳
负载均衡⽀持⽀持
⼿动上下
线服务⽅
通过控制台页⾯和API通过调⽤API
跨中⼼同
⽀持不⽀持
k8s集成⽀持不⽀持
分组Nacos可⽤根据业务和环境进⾏分组管理不⽀持
权重Nacos默认提供权重设置功能,调整承载流量压⼒不⽀持
⼚商阿⾥巴巴Netflix
2.2服务配置中⼼对⽐
对⽐项⽬/配置中⼼apollo nacos
开源时间2016.52018.6
配置实时推送⽀持(HTTP长轮询1s内)⽀持(HTTP长轮询1s内)
版本管理⾃动管理⾃动管理
对⽐项⽬/配置中⼼apollo nacos
配置回滚⽀持⽀持
权限管理⽀持待⽀持
多集多环境⽀持⽀持
监听查询⽀持⽀持
多语⾔Go,C++,Python,Java,,OpenAPI Python,Java,Nodejs,OpenAPI
分布式⾼可⽤最⼩集数量Config2+Admin3+Portal*2+Mysql=8Nacos*3+MySql=4
配置格式校验⽀持⽀持
通信协议HTTP HTTP
数据⼀致性数据库模拟消息队列,Apollo定时读消息HTTP异步通知
单机读(tps)900015000
单机写(tps)11001800
nacos具有Apollo⼤部分功能,最重要的是配置中⼼与注册中⼼打通,可以省去我们在微服务治理⽅⾯ 的⼀些投⼊(⽐如通过动态配置来启停线程池等操作)。
2.3 初步选型结论
初步结论为:使⽤Nacos代替Eureka和apollo,主要理由为:
相⽐与Eureka:
(1)Nacos具备服务优雅上下线和流量管理(API+后台管理页⾯),⽽Eureka的后台页⾯仅供展⽰,需要使⽤api操作上下线且不具备流量管理功能。
(2)从部署来看,Nacos整合了注册中⼼、配置中⼼功能,把原来两套集整合成⼀套,简化了部署维护
(3)从长远来看,Eureka开源⼯作已停⽌,后续不再有更新和维护,⽽Nacos在以后的版本会⽀持SpringCLoud+Kubernetes的组合,填补 2者的鸿沟,在两套体系下可以采⽤同⼀套服务发现和配置管理的解决⽅案,这将⼤⼤的简化使⽤和维护的成本。同时来说,Nacos 计划实现Service Mesh,是未来微服务的趋势
(4)从伸缩性和扩展性来看Nacos⽀持跨注册中⼼同步,⽽Eureka不⽀持,且在伸缩扩容⽅⾯,Nacos⽐Eureka更优(nacos⽀持⼤数量级的集)。
(5)Nacos具有分组隔离功能,⼀套Nacos集可以⽀撑多项⽬、多环境。
相⽐于apollo
(1) Nacos部署简化,Nacos整合了注册中⼼、配置中⼼功能,且部署相⽐apollo简单,⽅便管理和监控。
(2) apollo容器化较困难,Nacos有官⽹的镜像可以直接部署,总体来说,Nacos⽐apollo更符合KISS原则
(3)性能⽅⾯,Nacos读写tps⽐apollo稍强⼀些
汽车结论:使⽤Nacos代替Eureka和apollo
三、Nacos其他特性
3.1 Nacos Sync的价值
NacosSync是⼀个⽀持多种注册中⼼的同步组件,基于Spring boot开发框架,数据层采⽤Spring Data JPA,遵循了标准的JPA访问规范,⽀持多种数据源存储,默认使⽤Hibernate实现,更加⽅便的⽀持表的⾃动创建更新
使⽤了⾼效的事件异步驱动模型, ⽀持多种⾃定义事件,使得同步任务处理的延时控制在3s,8C16G的单机能够⽀持6K的同步任务
NacosSync除了单机部署,也提供了⾼可⽤的集部署模式,NacosSync是⽆状态设计,将任务等状态数据迁移到了数据库,使得集扩展⾮常⽅便
image.png image.png
image.png