SpringCloudAlibaba教程之注册中心Nacos

news/2024/12/14 13:45:35/

目录

概念

架构

设计原则

架构分层

用户层

业务层

内核层

插件

单机部署

1.下载安装包

nacos-toc" style="margin-left:40px;">2.安装nacos

nacos-toc" style="margin-left:40px;">3.启动nacos

快速开始

1.添加Maven依赖

2.添加配置

3.启动

集群部署

搭建步骤

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

nacos-toc" style="margin-left:80px;">2.配置nacos

nacos%E9%9B%86%E7%BE%A4-toc" style="margin-left:80px;">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 系统的。

nacos">2.安装nacos

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

目录说明:

        bin:启动脚本

        conf:配置文件

        data:数据文件

        logs:日志

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

nacos">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

nacos">2.配置nacos

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

修改cluster.conf:添加内容:

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

nacos%E9%9B%86%E7%BE%A4">3.启动nacos集群

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

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

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

startup.cmd

4.nginx反向代理

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

java">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.ppmy.cn/news/1555028.html

相关文章

【ETCD】【源码阅读】深入解析 raftNode.start方法实现

让我们从源码层面逐步分析这段代码。这段代码是 ETCD Raft 实现中,raftNode 的 start 方法,负责启动一个 Raft 节点,并在一个新的 goroutine 中处理 Raft 相关的事件。以下是对代码的逐步分析: 代码总体结构 func (r *raftNode)…

数据结构——跳表

目录 1.什么是跳表-skiplist 2.skiplist的效率如何保证? 3.skiplist的实现 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的…

2024年鄂州初级、中级职称公示了

本次鄂州市工程、中职教师、技工学校教师、档案、农业、新闻、艺术、群文、文博等专业中级和初级职称公示了,通过共有371人,公示时间为2024年12月9日至2024年12月13日。 本次公示工程类中级职称人员有210人通过评审,助理职称有35人通过评审。…

重生之我在异世界学智力题(6)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言海盗分金币问题(1&#x…

手机IP谜团:一个设备,两个IP?

在日常使用手机上网的过程中,有时我们会发现手机竟然显示了两个IP地址,这让人不禁感到困惑。那么,一个手机为何会出现两个IP呢?这背后究竟隐藏着什么原因?虎观代理小二将为您详细解析这一现象,并探讨其可能…

RK3576 Android14,内存大于4G时UVC应用无法申请内存

最近有个项目需要将Linux虚拟成UVC摄像头,开发过程中遇到一个奇怪的事情,通过V4l2框架接口申请内存时,相同的板子,只是内存一个4G一个8G。4G的内存可以申请成功,8G就不行。提示“内存不足” 内存更大反而内存不足&…

DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(一)

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

cron服务执行定时任务

参考链接 cron表达式在线解析:quartz/Cron/Crontab表达式在线生成工具-BeJSON.com 定时任务运行时报错解决方法 运行脚本报 权限不够问题: 可以在脚本文件夹下直接执行 如下指令运行RequestAPI.sh 脚本 ./RequestAPI.sh 如果出现权限不够问…