SpringCloudAlibaba教程之注册中心Nacos

目录

概念

架构

设计原则

架构分层

用户层

业务层

内核层

插件

单机部署

1.下载安装包

2.安装nacos

3.启动nacos

快速开始

1.添加Maven依赖

2.添加配置

3.启动

集群部署

搭建步骤

1.搭建数据库,初始化数据库表结构

2.配置nacos

3.启动nacos集群

4.nginx反向代理

运行机制

Nacos与Eureka的区别 


概念

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

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

Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理。

架构

设计原则

 极简原则,简单才好用,简单才稳定,简单才易协作。
 架构⼀致性,⼀套架构要能适应开源、内部、商业化(公有云及专有云)3 个场景。
 扩展性,以开源为内核,商业化做基础,充分扩展,方便用户扩展。
 模块化,将通用部分抽象下沉,提升代码复用和健壮性。
 长期主义,不是要⼀个能支撑未来 3 年的架构,而是要能够支撑 10 年的架构。
 开放性,设计和讨论保持社区互动和透明,方便大家协作。

架构分层

整体架构分为用户层、业务层、内核层和插件,用户层主要解决用户使用的易用性问题,业务层主
要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题,插件解决扩展性问题。

用户层

 OpenAPI:暴露标准 Rest 风格 HTTP 接口,简单易用,方便多语言集成。
 Console:易用控制台,做服务管理、配置管理等操作。
 SDK:多语言 SDK,目前几乎支持所有主流编程语言。
 Agent:Sidecar 模式运行,通过标准 DNS 协议与业务解耦。
 CLI:命令行对产品进行轻量化管理,像 git ⼀样好用。

业务层

 服务管理:实现服务 CRUD,域名 CRUD,服务健康状态检查,服务权重管理等功能。
 配置管理:实现配置管 CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能。
 元数据管理:提供元数据 CURD 和打标能力,为实现上层流量和服务灰度非常关键。

内核层

 插件机制:实现三个模块可分可合能力,实现扩展点 SPI 机制,用于扩展自己公司定制。
 事件机制:实现异步化事件通知,SDK 数据变化异步通知等逻辑,是 Nacos 高性能的关键部分。
 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮
助文档。
 回调机制:SDK 通知数据,通过统⼀的模式回调用户处理。接口和数据结构需要具备可扩展性。
 寻址模式:解决 Server IP 直连,域名访问,Nameserver 寻址、广播等多种寻址模式,需要可
扩展。
 推送通道:解决 Server 与存储、Server 间、Server 与 SDK 间高效通信问题。
 容量管理:管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性。
 流量管理:按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制。
 缓存机制:容灾目录,本地缓存,Server 缓存机制,是 Nacos 高可用的关键。
 启动模式:按照单机模式,配置模式,服务模式,DNS 模式模式,启动不同的模块。
 ⼀致性协议:解决不同数据,不同⼀致性要求情况下,不同⼀致性要求,是 Nacos 做到 AP 协
议的关键。
 存储模块:解决数据持久化、非持久化存储,解决数据分片问题。

插件

 Nameserver:解决 Namespace 到 ClusterID 的路由问题,解决用户环境与 Nacos 物理环境
映射问题。
 CMDB:解决元数据存储,与三方 CMDB 系统对接问题,解决应用,人,资源关系。
 Metrics:暴露标准 Metrics 数据,方便与三方监控系统打通。
 Trace:暴露标准 Trace,方便与 SLA 系统打通,日志白平化,推送轨迹等能力,并且可以和计
量计费系统打通。
 接入管理:相当于阿里云开通服务,分配身份、容量、权限过程。
 用户管理:解决用户管理,登录,SSO 等问题。
 权限管理:解决身份识别,访问控制,角色管理等问题。
 审计系统:扩展接口方便与不同公司审计系统打通。
 通知系统:核心数据变更,或者操作,方便通过SMS 系统打通,通知到对应人数据变更。

单机部署

1.下载安装包

可直接到 nacos 的 github 网站的 release 中下载,下载链接:Releases · alibaba/nacos · GitHub

如上图,.zip 包是用于 window 系统的,.tar.gz 包是用于 Linux 系统的。

2.安装nacos

下面我们安装一个 window 系统版本的,安装 nacos 其实非常简单,只需将压缩包解压即可。

目录说明:

        bin:启动脚本

        conf:配置文件

        data:数据文件

        logs:日志

Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。如果无法关闭占用8848端口的进程,也可以进入安装目录的 conf/application.properties 文件,修改配置文件中的端口:

3.启动nacos

进入安装目录的 bin 目录下,直接双击 startup.cmd 文件,但是这样默认是以集群模式启动的 nacos,此时就会读取集群的一些配置文件,可能会导致一些报错,所以我们可以通过 cmd 命令行来指定运行时的一些配置,比如下面命令指定以单体模式运行 nacos:

startup.cmd -m standalone

http://127.0.0.1:8848/nacos 即可访问到 nacos,如下:

默认的登录账户和密码都是 nacos。 

快速开始

1.添加Maven依赖

在子模块 order-service 中添加客户端依赖:

2.添加配置

3.启动

启动order-service 的入口启动类即可,可以在 nacos 页面中的服务列表中看到 order-service 已经注册成功。如下:

集群部署

其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx 

三个nacos节点的地址:

节点ipport
nacos1127.0.0.18848
nacos2127.0.0.18849
nacos3127.0.0.1

8850

搭建步骤

1.搭建数据库,初始化数据库表结构

首先新建一个数据库,命名为nacos,而后导入下面的SQL

2.配置nacos

进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:

修改cluster.conf:添加内容:

修改application.properties文件,添加数据库配置:

3.启动nacos集群

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3

然后分别修改三个文件夹中的application.properties,修改端口号为:

然后分别启动三个nacos节点:

startup.cmd

4.nginx反向代理

修改conf/nginx.conf文件,配置如下:

upstream nacos-cluster {server 127.0.0.1:8848;server 127.0.0.1:8849;server 127.0.0.1:8850;
}
​
server {listen       7001;server_name  localhost;
​location /nacos {proxy_pass http://nacos-cluster;}
}

而后在浏览器访问:http://localhost:7001/nacos即可。

代码中application.yml文件配置如下:

注意:

        实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置.

        Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离

运行机制

nacos 运行机制支持服务注册和服务拉取,都支持服务提供者心跳方式做健康检测。但是 nacos 不仅仅可以由服务区拉取服务列表,也可以由注册中心主动推送服务变更信息给服务,这样服务得到的服务清单能得到及时更新。并且 nacos 中的服务还区分临时实例和非临时实例。

临时实例和非临时实例的区别:

        临时实例:nacos 采用心跳模式来检测临时实例的状态,也就是需要由服务实例来主动发出心跳。临时实例如果心跳不正常则会被直接剔除

        非临时实例:nacos 采用主动检测模式来检测非临时实例的状态,也就是由注册中心主动去询问实例的状态。非临时实例状态异常并不会被剔除。

默认情况下,在 nacos 中注册的服务实例都是临时实例。要想修改为非临时实例,可以通过修改服务的配置文件来实现,只需修改 spring.cloud.nacos.discover.ephemeral 属性即可,如下:

Nacos与Eureka的区别 

Nacos与Eureka的区别如下:

        1.Nacos 支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

        2.临时实例心跳不正常会被剔除,非临时实例则不会被剔除

        3.Nacos 支持服务列表变更的消息推送模式,服务列表更新更及时

        4.Nacos 集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL 安装部署系列:使用YUM 方式在Centos 7.9 安装指定 PostgreSQL -15版本数据库

一、前言 千里之行始于足下,想学习一门数据库,首先要从安装部署开始,先拥有一套属于自己的学习测试库。为了更好的学习该数据库,可以选择一个在企业界使用率比较普及的操作系统,选择稳定版本的操作系统;如果…

李飞飞的生成式3D场景,对数字孪生的未来影响几何?

大家好,我是日拱一卒的攻城师不浪,致力于技术与艺术的融合。这是2024年输出的第47/100篇文章。 前言 这两天,AI界的教母李飞飞团队重磅发布了空间智能生成式AI大模型。 仅通过一张图片就能够生成一个可操作和交互的3D空间场景。 空间智能的…

Redis面试专题-持久化

目录 前言 持久化相关知识 1.三种持久化机制 2.RDB持久化 3.深入剖析一下RDB持久化过程 4.AOF持久化 5.RDB和AOF对比​编辑 面试题 1.redis持久化机制有哪些? 2.那仔细讲讲你对他们的理解 3.你刚刚说AOF的文件很大,那AOF文件会越来越大&#xf…

数据结构之初始二叉树(1)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 树型结构 树的概念 与树的有关概念 树的表示形式 树的应用 二叉树 概念 两种特殊的…

酷柚易汛生产管理系统PHP+Uniapp

生产管理系统,帮助企业数字化转型,打造智能工厂,专业为生产企业量身开发的一套完整的生产管理系统。主要包含以下模块:购货模块、生产模块、仓库模块、资料模块,可配合酷柚易汛进销存无缝衔接使用。 产品理念: 共享功…

从零开始学TiDB(2)深入了解TiDB Server模块

TiDB Server 架构 TiDB Server 的主要功能: 一条SQL的执行流程: 1.将整个SQL语句解析成一个个的token,生成一个树形结构。 2.编译模块 1.首先需要做一个合法性验证,比如表存不存在等。 2.做逻辑优化:依据关系型代数等…

贪心算法专题(四)

目录 1. 单调递增的数字 1.1 算法原理 1.2 算法代码 2. 坏了的计算器 2.1 算法原理 2.2 算法代码 3. 合并区间 3.1 算法原理 3.2 算法代码 4. 无重叠区间 4.1 算法原理 4.2 算法代码 5. 用最少数量的箭引爆气球 5.1 算法原理 ​5.2 算法代码 1. 单调递增的数字…

241207-通过Docker部署Wiki.JS并设置ElasticSearch进行中文搜索

A. 最终效果 B. 配置文件 version: "3" services:wiki:image: ghcr.io/requarks/wiki:2container_name: wikijsports:- "3000:3000"volumes:- /home/lgk/Projects/WikiJS/config:/configenvironment:- DB_TYPEpostgres- DB_HOSTdatabase- DB_PORT5432- DB…

Spring Boot如何实现防盗链

一、什么是盗链 盗链是个什么操作,看一下百度给出的解释:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的…

springboot394疫情居家办公系统(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统疫情居家办公系统信息管理难度大,容错率低&a…

RabbitMQ七种工作模式之 RPC通信模式, 发布确认模式

文章目录 六. RPC(RPC通信模式)客户端服务端 七. Publisher Confirms(发布确认模式)1. Publishing Messages Individually(单独确认)2. Publishing Messages in Batches(批量确认)3. Handling Publisher Confirms Asynchronously(异步确认) 六. RPC(RPC通信模式) 客⼾端发送消息…

模型训练数据-MinerU一款Pdf转Markdown软件

模型训练数据-MinerU一款Pdf转Markdown软件-说明 简介: MinerU是什么 MinerU是上海人工智能实验室OpenDataLab团队推出的开源智能数据提取工具,专注于复杂PDF文档的高效解析与提取。MinerU能将包含图片、公式、表格等元素的多模态PDF文档转化为易于分析…

STM32F103 PWM配置

在《STM32F103定时器配置》中我们介绍了PWM的产生原理,本节介绍介绍如何编码实现PWM的输出。 一、PWM相关寄存器 TIMx如果要产生PWM,除了我们上一节提到的如下寄存器: 控制寄存器(TIMx_CR1);DMA/中断使能寄存器(TIMx_DIER)&#x…

Flink Python作业快速入门

Flink Python快速入门_实时计算 Flink版(Flink)-阿里云帮助中心 import argparse # 用于处理命令行参数和选项,使程序能够接收用户通过命令行传递的参数 import logging import sysfrom pyflink.common import WatermarkStrategy, Encoder, Types from pyflink.data…

三菱CNC数采超详细,资料全备教程,后续更新发那科数采教程

三菱数采详细教程 文章目录 三菱数采详细教程一、介绍1.背景2.需要掌握知识3.需要资料①三菱SDK包:A2②三菱com接口文档③C#代码:④VStudio⑤资料存放网盘 二、程序运行1.调试设备①条件②命令 2.运行软件①打开软件②运行程序 三、数据采集1.代码了解2.…

常见限流算法详细解析

常见限流算法详细解析 分布式系统中,由于接口API无法控制上游调用方的行为,因此当瞬时请求量突增时,会导致服务器占用过多资源,发生响应速度降低、超时、乃至宕机,甚至引发雪崩造成整个系统不可用。 限流,…

java+ssm+mysql高校学籍管理系统

项目介绍: 使用javassmmysql开发的高校学籍管理系统,系统包含超级管理员,系统管理员、教师、学生角色,功能如下: 超级管理员:管理员管理(可以新增管理员);专业管理&…

(5)JS-Clipper2之PolyNode

1. 描述 PolyNodes是被封装在PolyTree的容器中,同时提供了一个数据结构来代表由Excute()方法返回的多边形轮廓中的父子关系。 一个PolyNode对象代表一个多边形;它的“IsHole”属性表明它是一个“外轮廓”还是一个“内孔”,PolyNodes可能包含…

Java项目实战II基于微信小程序的无中介租房系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速,租房市场日益繁荣&a…

MATLAB稀疏感知图像和体数据恢复的系统对象研究

稀疏感知图像和体数据恢复是一种用于恢复损坏、噪声或不完整的图像和体数据的技术。它利用了信号的稀疏性,即信号在某种基础下可以用较少的非零系数表示,从而实现高质量的恢复。 在进行稀疏感知图像和体数据恢复的研究时,需要定义一些系统对…