代码编织梦想

简介

Nacos是阿里开源的服务发现与注册的管理平台。Nacos 致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。其官网地址: https://nacos.io/zh-cn/docs/quick-start.html

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
从名称中我们可以知道Nacos的主要功能作用

  1. Dynamic Naming 动态的命名服务(即注册中心)
  2. Configuration 配置中心
  3. Service 服务

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可以发现和注册的服务:

  • Kubernetes Service
  • gRPC & Dubbo RPC Service
  • Spring Cloud RESTful Service
  • 动态配置服务

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

  • 动态 DNS 服务

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

  • 服务及其元数据管理

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

官方架构图以及一些重要的概念

在这里插入图片描述

  • 服务 (Service)

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。

  • 服务注册中心 (Service Registry)

服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

  • 服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。

  • 服务提供方 (Service Provider)

是指提供可复用和可调用服务的应用方。

  • 服务消费方 (Service Consumer)

是指会发起对某个服务调用的应用方。

  • 配置 (Configuration)

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。

  • 配置管理 (Configuration Management)

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。

  • 名字服务 (Naming Service)

提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的2大场景。

  • 配置服务 (Configuration Service)

在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。

预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。(本文使用windows来讲解)
64 bit JDK 1.8+;
Maven 3.2.x+;
服务器要求:
建议: 2核 CPU / 4G 内存 及其以上
建议: 生产环境 3 个节点 及其以上

安装部署方式

Nacos支持三种部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

下载安装

  1. 下载源码安装
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

git下载源码后,源码的分支为develop,可自己切换分支后在执行bin目录下的命令

  1. 下载最新稳定版的zip或者tar.gz包解压
    点击下载稳定版本 下载 nacos-server-$version.zip 包

启动Nacos

Nacos启动默认为集群模式,所以bin目录下的命令(startup.sh或startup.cmd)直接执行是会报错的,因为默认启动是集群模式(推荐在生产环境使用集群模式,集群模式至少3个Nacos集群)。在我们本地调试或者开发的时候,可以使用单机模式,本章我们先采用单机模式启动,后面我们再讲解集群模式的搭建。

Linux/Unix/Mac下启动

cd到bin目录执行如下命令

sh startup.sh -m standalone

ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

windows下启动

打开cmd命令窗口,cd到bin目录,执行如下命令

startup.cmd -m standalone

standalone表示单机运行,如果直接执行命令,默认是集群启动,但是我们目前又没有配置集群,所以大概率集群启动是会报错的,目前我们就单机启动就行了。

启动日志

bin>startup.cmd -m standalone
"nacos is starting with standalone"

         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 2.2.0
,`--.'`|  ' :                       ,---.               Running in stand alone mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8848
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 3692
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://2.0.0.1:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'

2022-12-20 09:33:53,598 INFO Tomcat initialized with port(s): 8848 (http)

2022-12-20 09:33:53,767 INFO Root WebApplicationContext: initialization completed in 5377 ms

2022-12-20 09:34:02,817 INFO Adding welcome page: class path resource [static/index.html]

2022-12-20 09:34:04,264 WARN You are asking Spring Security to ignore Ant [pattern='/**']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.

2022-12-20 09:34:04,265 INFO Will not secure Ant [pattern='/**']

2022-12-20 09:34:04,332 INFO Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@74cec793, org.springframework.security.web.context.SecurityContextPersistenceFilter@389adf1d, org.springframework.security.web.header.HeaderWriterFilter@6fa590ba, org.springframework.security.web.csrf.CsrfFilter@4985cbcb, org.springframework.security.web.authentication.logout.LogoutFilter@18e7143f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1fc0053e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@47874b25, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6fefce9e, org.springframework.security.web.session.SessionManagementFilter@72e34f77, org.springframework.security.web.access.ExceptionTranslationFilter@293bb8a5]

2022-12-20 09:34:04,382 INFO Exposing 1 endpoint(s) beneath base path '/actuator'

2022-12-20 09:34:04,457 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'

2022-12-20 09:34:04,497 INFO Nacos started successfully in stand alone mode. use embedded storage

从日志中我们可以看到,其默认的启动端口是8848,访问路径是:http://2.0.0.1:8848/nacos/index.html,这个2.0.0.1可以认为是你的本机ip,也可以替换为127.0.0.1或localhost

访问Nacos

访问链接http://2.0.0.1:8848/nacos/index.html可以看到如下界面
在这里插入图片描述

注意红色的提示信息:Nacos是千万不可暴露在公网访问的,特别是你的生产环境,大家切记。

登录Nacos

Nacos的默认登录账号密码为nacos/nacos,第一次登录后可以在 <权限控制>-<用户管理>中修改密码,或者删除Nacos账号新增其他账号。
在这里插入图片描述

关闭Nacos

cd到bin目录

sh shutdown.sh
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/forlinkext/article/details/128375383

nacos篇一 - 基本介绍_昌杰的攻城狮之路的博客-爱代码爱编程_edas和nacos的区别

1、什么是Nacos Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 N

nacos与eureke的比较_码农初长成的博客-爱代码爱编程_nacos的优点和缺点

nacos与eureke的比较 一:nacos特性 Spring Cloud Nacos 官网:https://nacos.io/zh-cn/index.html Nacos 支持几乎所有主流类型的“服务”的发现、配

nacos 发布0.3.0版本,迄今为止看起来最舒服的版本_阿里巴巴中间件的博客-爱代码爱编程

近日,Nacos 0.3.0 正式发布,该版本旨在增强对服务列表,健康状态管理,服务治理,分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本,在第一版的 UI 功能规划中,将提供包括下列基本功能: 服务管理 服务列表及服务健康状态展示服务元数据存储及编辑服务流量权重的调整服务优雅上下线配置管理 多

nacos知识梳理与环境搭建_weixin_38325846的博客-爱代码爱编程_nacos.config.name

一、 什么是nacos Nacos 支持基于 DNS 、RPC 的服务发现、动态配置服务、动态 DNS 服务。 官方介绍: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动

nacos 配置中心 初窥-爱代码爱编程

https://help.aliyun.com/document_detail/44163.html?spm=a2c4g.11186623.6.586.850a1dadz5aCJT edas启动轻量级配置及注册中心

Nacos和Eureka的区别-爱代码爱编程

Eureka架构图: Eureka架构图 1.服务注册(register):Eureka Client会通过发送REST请求的方式,向Eureka Server注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。 什么时候注册

Nacos真香,从零到一学起来-爱代码爱编程

Nacos是阿里巴巴开源的微服务管理平台,可以帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。【资料获取】 这篇文章主要来讲一下Nacos作为配置中心和注册中心的使用。 1 安装 1.1 linux下安装 首先搭建一套单机版的Nacos集群。Nacos的安装有两种方式,一种是下载源码自己编译安装,另一种是下载编译后的压缩包解压后直接

php nacos服务注册与发现-爱代码爱编程

本文为joshua317原创文章,转载请注明:转载自joshua317博客 php nacos服务注册与发现 - joshua317的博客 1 扩展安装 安装grpc、protobuf 2 Laravel项目安装 2.1 指定仓库地址 composer config -g repo.packagist composer https://mirro

nacos和eureka的区别-爱代码爱编程

nacos和eureka的区别如下; 1.nacos和eureka都是注册中心,都具有各自的负载均衡策略,eureka分为Eureka Server(Eureka服务)和Eureka Client(Eureka客户端),所有Eureka Server 通过Replicate进行数据同步。无论Eureka Client向哪个Eureka Serve

php 使用nacos部署配置中心,无侵入式部署-爱代码爱编程

1、根据nacos文档描述部署nacos服务端 https://nacos.io/zh-cn/docs/quick-start-docker.html 注:可以根据自己需求修改对应文件后在构建docker容器 2、使用go-nacos脚本 源码地址:https://github.com/wannanbigpig/go-nacos 项目已经打包

nacos的入门学习_暗失一切的博客-爱代码爱编程

一、介绍 nacos是阿里巴巴最新开源的Spring Cloud Alibaba的一个组件,主要是有两个核心功能:服务注册与发现,动态配置管理。 官方地址:https://nacos.io/zh-cn 1.服务注册与发现