前言

本系列是从头开始进行学习Nacos的相关知识,从相关概念到业务开发等等。本篇是第一篇,主要了解下Nacos的基础信息,方便大家技术选型。

1 为什么要用Nacos

1.eureka 2.0闭源码了

2.开箱即用,上手简洁,暂时也没发现有太大的坑

3.nacos使用的raft协议,nacos集群的一致性要远大于eureka集群

4.因为nacos功能更加丰富,社区更加活跃

5.背靠国内大厂(经受双十一的考验),中英文文档

6.界面美观

Raft 的数据一致性策略

Raft 协议强依赖 Leader 节点来确保集群数据一致性。即 client 发送过来的数据均先到达 Leader 节点,Leader 接收到数据后,先将数据标记为 uncommitted 状态,随后 Leader 开始向所有 Follower 复制数据并等待响应,在获得集群中大于 N/2 个 Follower 的已成功接收数据完毕的响应后,Leader 将数据的状态标记为 committed,随后向 client 发送数据已接收确认,在向 client 发送出已数据接收后,再向所有 Follower 节点发送通知表明该数据状态为committed。

对比图

Nacos与Eureka详细对比图

nacos集群只能MySQL吗 nacos集群作用_java

Nacos与各种注册中心产品对比图

功能特点

Nacos

Eureka

Consul

CoreDNS

Zookeeper

一致性协议

CP+AP

AP

CP


CP

健康检查

TCP/HTTP/MYSQL/Client Beat

Client Beat

TCP/HTTP/gRPC/Cmd


Keep Alive

负载均衡策略

权重/ metadata/Selector

Ribbon

Fabio

RoundRobin


雪崩保护






自动注销实例

支持

支持

不支持

不支持

支持

访问协议

HTTP/DNS

HTTP

HTTP/DNS

DNS

TCP

监听支持

支持

支持

支持

不支持

支持

多数据中心

支持

支持

支持

不支持

不支持

跨注册中心同步

支持

不支持

支持

不支持

不支持

SpringCloud集成

支持

支持

支持

不支持

不支持

Dubbo集成

支持

不支持

不支持

不支持

支持

K8S集成

支持

不支持

支持

支持

不支持

ps: 简单来说,NB就完事了

2 什么是Nacos

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。(配置中心、注册中心)

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

官方网址:http://nacos.io

2.1 服务发现

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

描述

主要开发者

状态

服务注册与发现

nkorange

稳定

健康检查(服务端探测、客户端心跳)

xuanyin

稳定

路由策略(权重、保护阈值、就近访问)

wangjianwei

稳定

2.2 配置管理

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易

描述

主要开发者

状态

配置管理(发布、修改、查询、监听配置)

yanlinly

稳定

灰度配置

yanlinly

稳定

加密配置

不支持

3 Nacos的特点

易于使用
  • 动态配置管理、服务发现和动态的一站式解决方案
  • 20多种开箱即用的以服务为中心的架构特性
  • 基本符合生产要求的轻量级易用控制台
更适应云架构
  • 无缝支持Kubernetes和Spring Cloud
  • 在主流公共云上更容易部署和运行(例如阿里云和AWS)
  • 多租户和多环境支持
生产等级
  • 脱胎于历经阿里巴巴10年生产验证的内部产品
  • 支持具有数百万服务的大规模场景
  • 具备企业级SLA的开源产品
丰富的应用场景
  • 支持限流、大促销预案和异地多活
  • 直接支持或稍作扩展即可支持大量有用的互联网应用场景
  • 流量调度和服务治理

4 现已支持的客户端

描述

主要开发者

状态

Java客户端

Nacos

稳定

Go客户端

atlanssia, lzp0412

稳定

Node.js客户端

czy88840616, gxcsoccer

稳定

Python客户端

sanwei

beta

C#客户端

catcherwong

推荐

C++客户端

PHP客户端

Spring客户端

chuntaojun

稳定

SpringBoot客户端

chuntaojun

稳定

5 总结

  • Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。
  • Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现
  • Nacos只需要简单的配置就可以完成服务的注册发现。
  • Nacos还支持动态配置服务,可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置
  • nacos功能更加丰富,社区更加活跃,背靠国内大厂(经受双十一的考验),中英文文档,界面美观。