Nacos 极简入门

1. 概述

Nacos 是什么?其官方文档自我介绍如下:

FROM 什么是 Nacos

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

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

看起来介绍看起来有点高大上。Nacos 是 Dynamic Naming and Configuration Service 的缩写,动态命名和配置服务。正如其名,Nacos 是阿里开源的注册中心 + 配置中心服务。

目前,Nacos 对 Spring、Spring Boot、Spring Cloud、Dubbo 提供了非常好的支持,已经有蛮多大型互联网公司正在使用。

下面,我们先来一起对 Nacos 进行快速入门。

2. 单机部署(最简模式)

本小节,我们来最小化部署一个 Nacos 服务,适合演示学习之用。

2.1 下载 Nacos

在 https://github.com/alibaba/nacos/releases 中,我们可下载 Nacos 的安装包。

  • Windows 下载 .zip 包。
  • Linux / Unix / Mac 下载 .tar.gz 包。

后面,进行解压。

2.2 启动 Nacos

在命令行中,可以输入如下命令启动:

  • Windows 启动命令:cmd startup.cmd 。
  • Linux / Unix / Mac 启动命令:sh startup.sh -m standalone 。

如下,是艿艿使用 Mac 启动成功的日志:

2019-02-17 11:50:37,169 INFO Nacos started successfully in stand alone mode.

2019-02-17 11:50:40,993 INFO Initializing Servlet 'dispatcherServlet'

2019-02-17 11:50:41,003 INFO Completed initialization in 10 ms

 2.3 管理界面

浏览器中,打开 http://127.0.0.1:8848/nacos ,进行登录:

  • 账号:nacos
  • 密码:nacos

登录成功后,我们可以看到如下界面:

fe937faa686528dc229ae23d0e9d5400.jpeg

3. 单机部署(基于 MySQL 数据库)

操作系统:macOS 10.14

其它系统,基本一致的。

本小节,我们来单机部署一个 Nacos 服务,适合测试环境。如下图所示:

baa4c42c7aa5baac1b34df8221f209a6.png

  • 其中,MySQL 用于 Nacos 对配置的持久化。

3.1 MySQL 安装

相信大家都会,本文章不足陈述。

3.2 Nacos 安装

3.2.1 下载 Nacos

打开 Nacos 下载页面,选择想要的 Nacos 版本。这里,我们选择 1.1.4 最新版本。

# 创建目录
$ mkdir -p /Users/yunai/Nacos
$ cd /Users/yunai/Nacos

# 下载
$ wget https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

# 解压
$ tar -zxvf nacos-server-1.1.4.tar.gz
$ cd nacos

# 查看目录
$ ls -ls
40 -rw-r--r--@ 1 yunai  staff  17336 Oct 11 14:09  LICENSE
 8 -rw-r--r--@ 1 yunai  staff   1305 Oct 11 14:09 NOTICE
 0 drwxr-xr-x  6 yunai  staff    192 Jan 20 22:26 bin # 执行脚本
 0 drwxr-xr-x@ 8 yunai  staff    256 Nov  4 10:26 conf # 配置文件
 0 drwxr-xr-x  3 yunai  staff     96 Jan 20 22:26 target # jar 包(目前仅有 nacos-server.jar)

3.2.2 初始化数据库

在 conf 目录下,提供了 MySQL 数据库初始化脚本 nacos-mysql.sql。

我们可以根据自己的需要,创建一个库。例如说,艿艿这里创建一个 nacos-example 库。然后,使用该脚本进行数据库的初始化。最终表结构,如下图所示:

5340d4daa9d6208308905b41c1d36386.png

3.2.3 配置数据库连接

修改 conf/application.properties 配置文件,在尾部额外增加 MySQL 数据库配置如下:

# 数据源为 MySQL
spring.datasource.platform=mysql

# 数据源的数量。因为这里我们只配置一个数据源,所以设置为 1。
db.num=1
# 第 0 个数据源的配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-example?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 数据库的账号密码
db.user=root
db.password=

3.2.4 MySQL8 的支持

如果使用的 MySQL 是 8.X 版本,则需要看该步骤。否则,可以直接跳过。

默认情况下,Nacos 连接 MySQL 5.6.5+ 版本,所以使用的 MySQL JDBC 驱动。如果胖友和艿艿一样,准备使用 MySQL 8.X 版本,则需要下载对应的新版本的 JDBC 驱动。Nacos 提供插件机制,允许我们无需修改源码,直接可以支持,美滋滋,操作步骤如下:

# 创建插件目录
$ mkdir -p plugins/mysql

# 下载 MySQL 8.X JDBC 驱动
$ cd plugins/mysql
$ wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar

3.2.5 启动 Nacos 服务

执行 sh bin/startup.sh -m standalone 命令,启动 Nacos 服务。其中,-m standalone 表示单机模式。

启动完成后,可以在 logs/start.out 日志文件中,查看启动日志。如果看到如下内容,说明启动是成功的。

2020-01-20 23:34:08,358 INFO Nacos started successfully in stand alone mode.

2020-01-20 23:34:09,695 INFO Initializing Servlet 'dispatcherServlet'

2020-01-20 23:34:09,706 INFO Completed initialization in 11 ms

默认配置下,Nacos 服务使用 8848 端口。

3.2.6  访问 UI 界面

Nacos 服务,内置了 UI 界面。使用浏览器中,打开 http://127.0.0.1:8848/nacos 地址,使用默认的用户「nacos/nacos」进行登录。

友情提示:生产环境下,一定要记得修改默认的用户的密码噢。

登录成功后,我们可以看到如下界面:

b6c1f7737097823906d9d3530e21a2dd.png

4. 集群部署

在生产环境下,我们需要搭建 Nacos 集群,确保高可用。所以本小节,我们来搭建单机部署一个 Nacos 服务。如下图所示:

4661529111a7e3c126283933d8575fe8.png

  • 一共是 Nginx、Nacos、MySQL 三层,每一层都需要做高可用。

4.1 MySQL 安装

搭建 MySQL 集群,保证 MySQL 高可用。如果使用阿里云的话,可以考虑直接使用 RDS 服务,减少运维成本。

考虑到让示例更简单一些,艿艿这里暂时只使用 MySQL 单节点。

4.2 Nacos 安装

我们在本地搭建 3 个 Nacos 服务,实现 Nacos 高可用。因为 Nacos 服务之间通过 Raft 算法 保证一致性,所以我们建议 Nacos 部署的节点数为大于 3 的奇数。

4.2.1 复制 nacos 文件

将 的 nacos 文件,复制 nacos-01nacos-02nacos-03 三个文件夹,用于搭建三个 Nacos 节点。操作命令如下:

# 复制
$ cp -r nacos nacos-01
$ cp -r nacos nacos-02
$ cp -r nacos nacos-03

# 查看目录
$ ls -ls
     0 drwxr-xr-x  11 yunai  staff       352 Jan 20 23:33 nacos
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-01
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-02
     0 drwxr-xr-x  11 yunai  staff       352 Jan 21 09:22 nacos-03
102408 -rw-r--r--@  1 yunai  staff  52115827 Jan 20 21:58 nacos-server-1.1.4.tar.gz

4.2.2 初始化数据库

继续使用 nacos-example

4.2.3 配置数据库连接

对 nacos-01nacos-02nacos-03 三个文件夹,修改 conf/application.properties 配置文件,在尾部额外增加 MySQL 数据库配置如下:

# 数据源为 MySQL
spring.datasource.platform=mysql

# 数据源的数量。因为这里我们只配置一个数据源,所以设置为 1。
db.num=1
# 第 0 个数据源的配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-example?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 数据库的账号密码
db.user=root
db.password=
  • 如果使用 MySQL 集群,可以修改 db.num 为 MySQL 节点数量,然后在 db.url.1db.url.2 不断往下配置。

4.2.4 配置服务器地址

因为我们是在本机启动三个 Nacos 服务,所以需要修改其端口,保证能够启动。在 conf/application.properties 配置文件,修改 server.port 配置项,可以修改 Nacos 服务器端口。这里我们分别修改如下:

  • nacos-01 对应 18848 端口。
  • nacos-02 对应 28848 端口。
  • nacos-03 对应 38848 端口。

4.2.5 配置 Nacos 集群

在 nacos-01nacos-02nacos-03 三个文件夹中,创建 conf/cluster.conf 配置文件,配置一个 Nacos 集群的所有节点。具体内容如下:

# ip:port
192.168.3.44:18848
192.168.3.44:28848
192.168.3.44:38848

 

  • 每一行为 Nacos 节点的服务器地址,格式为 ip:port
  • 注意,不要使用 127.0.0.1 这个 IP 地址,因为 Nacos 获取的是外部 IP。因此,艿艿这里使用的是 192.168.3.44

通过该配置文件,每个 Nacos 服务可以知道集群中的其它 Nacos 节点。

4.2.6 启动 Nacos 服务

现在,让我们来启动三个 Nacos 服务。

  • 执行 sh nacos-01/bin/startup.sh 命令,启动 Nacos 节点 01。
  • 执行 sh nacos-02/bin/startup.sh 命令,启动 Nacos 节点 02。
  • 执行 sh nacos-03/bin/startup.sh 命令,启动 Nacos 节点 03。

每个 Nacos 节点是否启动成功,胖友自己去看看 logs/start.out 日志文件。

4.2.7 访问 UI 界面

三个节点启动成功后,我们访问 Nacos 节点 01 的 UI 界面。使用浏览器中,打开 http://127.0.0.1:18848/nacos 地址,使用默认的用户「nacos/nacos」进行登录。

登录成功后,点击「节点列表」菜单,我们就可以看到搭建的 Nacos 集群信息。界面如下:

5b9fe4a65bdb97078a982f09e9ea884f.png

总结 

至此,我们已经完成了 Nacos 搭建。生产环境下,请将 Nacos 多个节点部署到多个服务器,保证 Nacos 的高可用。后面文章我们将讲解Nacos整合Springboot。

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网易云音乐 API

网易云音乐 API 网易云音乐 API灵感来自环境要求安装运行Vercel 部署操作方法 可以在Node.js调用支持 TypeScript使用文档功能特性更新日志单元测试SDK贡献者License 网易云音乐 API 网易云音乐 Node.js API service 灵感来自 disoul/electron-cloud-music darknessomi/musi…

DDoS攻击规模最大的一次

有史以来DDoS攻击规模最大的是哪一次? Google Cloud团队在2017年9月披露了一次此前未公开的DDoS攻击,其流量达 2.54Tbps,是迄今为止有记录以来最大的DDoS攻击。 在同时发布的另一份报告中,分析高端威胁团体的谷歌安全团队谷歌威胁…

[笔记]深度学习入门 基于Python的理论与实现(四)

4. 神经网络的学习 这里说的‘学习’就是指从训练数据中自动获取最优权重参数的过程。为了进行学习,将导入损失函数这一指标。而学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。为此,我们介绍利用了函数斜率的梯度法。…

RK3568 android11 移植 v4l2loopback 虚拟摄像头

一,v4l2loopback 简介 v4l2loopback是一个Linux内核模块,它允许用户创建虚拟视频设备。这种虚拟视频设备可以用于各种用途,例如将实际摄像头的视频流复制到虚拟设备上,或者用于视频流的处理和分析等。v4l2loopback的主要作用是创…

大语言模型漏洞缓解指南

虽然大语言模型(LLM)应用正在全球快速普及,但企业对大语言模型的威胁态势仍然缺乏全面了解。面对大语言模型风险的不确定性,企业希望在保障其安全性的基础上加快应用脚步,用人工智能提升企业核心竞争力,这意味着企业的CISO面临着理…

Vray渲染效果图材质参数设置

渲染是创造出引人入胜视觉效果的关键步骤,在视觉艺术领域尤为重要。不过,渲染作为一个资源密集型的过程,每当面对它时,我们往往都会遭遇到时间消耗和资源利用的巨大挑战。幸运的是,有几种方法能够帮助我们优化渲染&…

vue列表飞入效果

效果 实现代码 <template><div><button click"add">添加</button><TransitionGroup name"list" tag"ul"><div class"list-item" v-for"item in items" :key"item.id">{{ i…

恒创科技:云存储和网盘怎么区分出来?

随着互联网的发展&#xff0c;数据存储已成为人们日常生活中不可或缺的一部分。云存储和网盘是经常被人们提及的两种存储方式&#xff0c;均通过网络进行数据存储和访问的服务。但&#xff0c;它们在技术实现、数据安全性、访问方式和数据容量等方面存在一定的差异。要区分&…

数据库表合并场景实践

在实际场景中&#xff0c;我们见的比较多的是表拆分&#xff0c;正好遇到一个需要表合并的需求&#xff0c;下面来分析分析 背景 目前是线上有若干张表&#xff1a;a1 a2、b1 b2、c1 c2...&#xff0c;目前需要将这些表进行合并[将b1 c1等表数据都合并到a1&#xff0c;将b2 c2…

【机器学习】四大类监督学习_模型选择与模型原理和场景应用_第03课

监督学习中模型选择原理及场景应用 监督学习应用场景 文本分类场景&#xff1a; o 邮件过滤&#xff1a;训练模型识别垃圾邮件和非垃圾邮件。 o 情感分析&#xff1a;根据评论或社交媒体内容的情感倾向将其分类为正面、负面或中性评价。 o 新闻分类&#xff1a;将新闻文章自动…

中国联通助力吴江元荡生态岸线打造5G+自动驾驶生态长廊

吴江&#xff0c;素有“鱼米之乡”“丝绸之府”的美誉&#xff0c;其地理位置优越&#xff0c;地处太湖之滨。近年来&#xff0c;随着长三角生态绿色一体化发展示范区&#xff08;以下简称“示范区”&#xff09;的建立&#xff0c;元荡更是声名大噪&#xff0c;成为众多游客心…

PyTorch各种损失函数解析:深度学习模型优化的关键(1)

目录 详解pytorch中各种Loss functions binary_cross_entropy 用途 用法 参数 数学理论 示例代码 binary_cross_entropy_with_logits 用途 用法 参数 数学理论 示例代码 poisson_nll_loss 用途 用法 参数 数学理论 示例代码 cosine_embedding_loss 用途 …

mac PyCharm 使用conda环境

1 使用conda创建虚拟环境 conda create -n test6 python3.9 -y conda activate test62 选择conda环境 本地 选择已经存在的conda环境 右下角会显示现在的环境。

adb、monkey的下载和安装

adb下载 官网网址&#xff1a;Downloads - ADB Shell 尽量不要下载最新的ADB Kits&#xff0c;因为兼容性可能不太好。 点击下载 ADB Kits 作者下载的版本是1.0.36 解压adb 到指定的目录即可。 然后把adb配置 环境变量。 检查adb是否安装成功

骑砍2霸主MOD开发-作弊模式控制台模式

一.作弊模式开启 config文件路径:C:\Users\Administrator\Documents\Mount and Blade II Bannerlord\Configs\engine_config.txt 修改配置项:cheat_mode 0 → cheat_mode 1 启动游戏后,作弊按键: Ctrl Left Click—传送地图的任意点。Ctrl H—主角满血。CTRL Shift H—主角全…

C语言中的字符串操作函数自定义实现:标准版与限定长度版

目录 1. 标准字符串操作函数自定义实现 (a) 自定义strcpy函数 (b) 自定义strcat函数 (c) 自定义strcmp函数 2. 限定长度字符串操作函数自定义实现 (a) 自定义strncpy函数 (b) 自定义strncat函数 (c) 自定义strncmp函数 对字符串的操作是不可或缺的一部分。标准库提供了…

【.NET Core】 多线程之(Thread)详解

【.NET Core】 多线程之&#xff08;Thread&#xff09;详解 文章目录 【.NET Core】 多线程之&#xff08;Thread&#xff09;详解一、概述二、线程的创建和使用2.1 ThreadStart用于无返回值&#xff0c;无参数的方法2.2 ParameterizedThreadStart:用于带参数的方法 三、线程的…

REVIT二次开发生成三维轴网

步骤1 确定轴网 步骤2 生成3D轴网 using System; using System.Collections.Generic; using System.Linq; using System.Text;

C#winform上位机开发学习笔记2-串口助手的中文支持功能添加

分为两步&#xff1a; 1.串口接收支持中文显示 1.1.在软件初始化时写入此代码以支持汉字显示 //串口接收支持中文显示serialPort1.Encoding Encoding.GetEncoding("GB2312"); //串口1的解码支持GB2312汉字 2.串口发送支持中文输出 //支持中文输出Encoding Chine…

文心一言使用分享

ChatGPT 和文心一言哪个更好用&#xff1f; 一个直接可以用&#xff0c;一个还需要借助一些工具&#xff0c;还有可能账号会消失…… 没有可比性。 通用大模型用于特定功能的时候需要一些引导技巧。 import math import time def calculate_coordinate(c, d, e, f, g, h,…