nacos⽂档
Nacos预研
⼀、前⾔
为什么要做Spring Cloud Alibaba Nacos调研?
spring cloud中的⼏乎所有的组件都使⽤Netflix公司的产品,然后在其基础上做了⼀层封装。然⽽Netflix的服务发现组件Eureka已经停⽌更新,⽽其他的众多组件预计会在今年停⽌维护。所以急需其他的⼀些替代产品,也就是spring cloud alibaba,⽬前正处于蓬勃发展的态式。
⼆、Spring Cloud Alibaba简介
Spring Cloud Alibaba 致⼒于提供分布式应⽤服务开发的⼀站式解决⽅案。项⽬包含开发分布式应⽤服务的必需组件,⽅便开发者通过Spring Cloud 编程模型轻松使⽤这些组件来开发分布式应⽤服务。
已包括的组件有:
Sentinel:把流量作为切⼊点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:⼀个更易于构建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。
RocketMQ:⼀款开源的分布式消息系统,基于⾼可⽤分布式集技术,提供低延时的、⾼可靠的消息发布与订阅服务。
Dubbo:Apache Dubbo 是⼀款⾼性能 Java RPC 框架。
Seata:阿⾥巴巴开源产品,⼀个易于使⽤的⾼性能微服务分布式事务解决⽅案。
Alibaba Cloud ACM:⼀款在分布式架构环境中对应⽤配置进⾏集中管理和推送的应⽤配置中⼼产品。
Alibaba Cloud OSS: 阿⾥云对象存储服务(Object Storage Service,简称 OSS),是阿⾥云提供的海量、安全、低成本、⾼可靠的云存储服务。您可以在任何应⽤、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX: 阿⾥中间件团队开发的⼀款分布式任务调度产品,提供秒级、精准、⾼可靠、⾼可⽤的定时(基于 Cron 表达式)任务调度服务。
Alibaba Cloud SMS: 覆盖全球的短信服务,友好、⾼效、智能的互联化通讯能⼒,帮助企业迅速搭建客户触达通道。
三、Spring Cloud Alibaba与Spring官⽅提供的⽅案对应关系
Nacos=Eureka/Consule + Config + Admin
Sentinel=Hystrix + Dashboard + Turbine
Dubbo=Ribbon + Feign
RocketMQ=RabbitMQ
Schedulerx=Quartz
四、Nacos介绍
nacos的优点,为什么要选择它?
Nacos是阿⾥的⼀个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决⽅案。
Nacos主要提供以下四⼤功能:
1. 服务发现与服务健康检查
Nacos使服务更容易注册,并通过DNS或HTTP接⼝发现其他服务,Nacos还提供服务的实时健康检查,以防⽌向不健康的主机或服务实例发送请求。
1. 动态配置管理
动态配置服务允许您在所有环境中以集中和动态的⽅式管理所有服务的配置。Nacos消除了在更新配置时重新部署应⽤程序,这使配置的更改更加⾼效和灵活。
1. 动态DNS服务
Nacos提供基于DNS 协议的服务发现能⼒,旨在⽀持异构语⾔的服务发现,⽀持将注册在Nacos上的服务以域名的⽅式暴露端点,让三⽅应⽤⽅便的查阅及发现。
1. 服务和元数据管理
Nacos 能让您从微服务平台建设的视⾓管理数据中⼼的所有服务及元数据,包括管理服务的描述、⽣命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
4.1 nacos之注册中⼼,服务发现。
4.1.1 主流服务发现与配置中⼼对⽐
对⽐项⽬Nacos Eureka Consul Zookeeper ⼀致性协议⽀持AP和CP模型AP模型CP模型CP模型
健康检查TCP/HTTP/MYSQL/Client Beat Client Beat TCP/HTTP/gRPC/Cmd Keep Alive 负载均衡策略权重/metadata/Selector Ribbon Fabio-
雪崩保护有有⽆⽆
⾃动注销实例⽀持⽀持不⽀持⽀持
访问协议HTTP/DNS HTTP HTTP/DNS TCP
监听⽀持⽀持⽀持⽀持⽀持
多数据中⼼⽀持⽀持⽀持不⽀持跨注册中⼼同步⽀持不⽀持⽀持不⽀持SpringCloud集成⽀持⽀持⽀持不⽀持Dubbo集成⽀持不⽀持不⽀持⽀持
k8s集成⽀持不⽀持⽀持不⽀持
从上⾯对⽐可以了解到,Nacos作为服务发现中⼼,具备更多的功能⽀持项,且从长远来看Nacos在以后的版本会⽀持
SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采⽤同⼀套服务发现和配置管理的解决⽅案,这将⼤⼤的简化使⽤和维护的成本。另外,Nacos 计划实现 Service Mesh,也是未来微服务发展的趋势。
Nacos在经过阿⾥内部多年⽣产经验后提炼出的数据模型,则是⼀种服务-集-实例的三层模型,这样基本可以满⾜服务在所有场景下的数据存储和管理。
命名空间(Namespace)
⽤于进⾏租户粒度的配置隔离,命名空间不仅适⽤于nacos的配置管理,同样适⽤于服务发现。Namespace 的常⽤场景之⼀是不同环境的配置的区分隔离,例如开发测试环境和⽣产环境的资源(如配置、服务)隔离等。
服务
提供给客户端的软件功能,通过预定义接⼝⽹络访问。
服务名
服务提供的标识,通过该标识可以唯⼀确定其指代的服务。
实例
提供⼀个或多个服务的具有可访问⽹络地址(IP:Port)的进程,启动⼀个服务,就产⽣了⼀个服务实例。
元信息
Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种⾃定义标签 (label),从作⽤范围来看,分为服务级别的元信息、集的元信息及实例的元信息。
集
服务实例的集合,服务实例组成⼀个默认集, 集可以被进⼀步按需求划分,划分的单位可以是虚拟集,相同集下的实例才能相互感知。
应⽤通过Namespace、Service、Cluster(DEFAULT)的配置,描述了该服务向哪个环境(如开发环境)的哪个集注册实例。
4.1.1.1 服务列表管理
服务列表帮助⽤户以统⼀的视图管理其所有的微服务以及服务健康状态。整体界⾯布局是左上⾓有服务的搜索框和搜索按钮,页⾯中央是服务列表的展⽰。服务列表主要展⽰服务名、集数⽬、实例数⽬、健康实例数⽬和详情按钮五个栏⽬。
在服务列表页⾯点击详情,可以看到服务的详情。可以查看服务、集和实例的基本信息。
4.1.1.2 服务流量权重⽀持及流量保护
Nacos 为⽤户提供了流量权重控制的能⼒,同时开放了服务流量的阈值保护,以帮助⽤户更好的保护服务服务提供者集不被意外打垮。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调⼤,如果不想实例接收流量,则可以将权重设为0。
4.1.1.3 服务元数据管理
Nacos提供多个维度的服务元数据的暴露,帮助⽤户存储⾃定义的信息。这些信息都是以K-V的数据结构存储,在控制台上,会以
k1=v1,k2=v2这样的格式展⽰。类似的,编辑元数据可以通过相同的格式进⾏。例如服务的元数据编辑,⾸先点击服务详情页右上⾓
的“编辑服务”按钮,然后在元数据输⼊框输⼊:version=1.0。
4.1.1.4 服务优雅上下线
Nacos还提供服务实例的上下线操作,在服务详情页⾯,可以点击实例的“上线”或者“下线”按钮,被下线的实例,将不会包含在健康的实例列表⾥。
4.2 nacos之配置管理中⼼
4.2.1 主流配置中⼼对⽐
mysql帮助文档对⽐项⽬Spring Cloud Config Apollo Nacos
配置实时推送⽀持(Spring Cloud Bus)⽀持(HTTP长轮询1s内)⽀持(HTTP长轮询1s内)
版本管理⽀持(Git)⽀持⽀持
配置回滚⽀持(Git)⽀持⽀持
灰度发布⽀持⽀持不⽀持
权限管理⽀持(依赖Git)⽀持不⽀持
多集⽀持⽀持⽀持
多环境⽀持⽀持⽀持
监听查询⽀持⽀持⽀持
多语⾔只⽀持Java主流语⾔,提供了Open API主流语⾔,提供了Open API
配置格式校验不⽀持⽀持⽀持
单机读(QPS)7(限流所致)900015000
单机写(QPS)5(限流所致)11001800
3节点读(QPS)21(限流所致)2700045000
3节点写(QPS)5(限流所致)33005600
从配置中⼼⾓度来看,性能⽅⾯Nacos的读写性能最⾼,Apollo次之,Spring Cloud Config依赖Git场景不适合开放的⼤规模⾃动化运维API。功能⽅⾯Apollo最为完善,nacos具有Apollo⼤部分配置管理功能,⽽Spring Cloud Config不带运维管理界⾯,需要⾃⾏开发。Nacos的⼀⼤优势是整合了注册中⼼、配置中⼼功能,部署和操作相⽐Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署⼯作。综合来看,Nacos的特点和优势还是⽐较明显的。
对于Nacos配置管理,通过Namespace、group、Data ID能够定位到⼀个配置集。
配置集(Data ID)
在系统中,⼀个配置⽂件通常就是⼀个配置集,⼀个配置集可以包含了系统的各种配置信息,例如,⼀个配置集可能包含了数据源、线程池、⽇志级别等配置项。每个配置集都可以定义⼀个有意义的名称,就是配置集的ID即Data ID。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论